两个代码一模一样的C++工程,一模一样的输入,可是输出有误差如图所示

img


程序A和B代码一致,运行环境不一样,A在Unix B在Linux
两程序输入数据一致
因为程序代码量巨大,源码回述极其复杂。
程序中很多局部变量也是有误差的,但是误差都很小,小数点后五六位的样子吧。
像这种级别的误差结果可能是什么导致的呢?希望能有专家给点提示。

在32位系统下,int是32位的
在64位系统下,int是64位的
所以胡乱移植可能导致数据溢出而不自知

多方面因素,可能也跟编译器预处理,连接器也有关系。

精度差正好在float和double中间,追踪一下所有相关链条,显示转换为double看看。

浮点数表示的问题,比如你算4/2=2.0其实内部是
2.000000012
类似这样,如果数越来越小不影响,如果你要乘,乘上十亿,数字大了后小数点后面的就会影响精度.

底层数据类型的不同

操作系统不通,数据处理方式有差异,还有系统位数也有关系

信息详细一点,或者把程序发出来。