浮点数默认精度在windows/linux上的差异

好久没写点什么了。
浮点数在fpu上处理有个精度控制,可以是单精度(长32bit其中尾数24bit),双精度(长64bit尾数56bit),扩展精度(长80bit,尾数64bit)。这是通过浮点控制字的一个位段来控制的。
在windows/vc环境(未证实,也许与编译器有关,比如是vc)下,默认的精度是双精度。
在linux/gcc环境则默认是扩展精度。
这可以造成你在含有浮点计算的程序移植时出现一些细微的差异。
win/vc可以通过_controlfp函数改变默认设置,linux/gcc则是用_FPU_SETCW宏。
另外要说一点,dx初始化时可以选择浮点的精度为单精度,那个接口最终应该也是通过改变fpu的控制字实现的。
原文地址:https://www.cnblogs.com/kaikai/p/1400754.html