我在 C 中实现了一个使用浮点数的算法。当我在 i386 上编译和运行时,我得到的结果与我在 armel 上编译和运行时得到的结果不同。特别是 int-by-float 的除法,会产生不同的浮点数。
我从我的算法中提取了一些代码来演示这个问题:
#include <stdio.h>
void main(void)
{
float x = 4.80000019;
float y = 4.80000019;
int a = 38000;
int b = 10000;
int result = (a/x)+(b/y);
printf("%.8f, %.8f\n", x, y); // same on i386 and armel
printf("%f, %f\n", a/x, b/y); // slightly different on each
printf("%d\n", result); // prints 9999 on i386, and 10000 on armel
}
谁能解释为什么这两个平台会产生不同的结果?
亚历克斯