以下面的示例(带有伪造的数字)为例:
double a = 9.0, b = 2.0;
double c = a / b;
int d = RoundAndCastToInt(c);
在多次运行中,d
的值不一致。这是两种人为设计的数学运算方式:
执行1:
9.0 / 2.0 == 4.49999 ...
RoundAndCastToInt(4.49999 ...)== 4
执行2:
9.0 / 2.0 == 4.5
RoundAndCastToInt(4.5)== 5
我想在不同的执行程序和不同的机器上始终如一地获得相同的值。在以上示例中,只要始终 4
或始终 { {1}}。
答案 0 :(得分:-1)
这可能很愚蠢,但有很多未解决的细节,但是我想当您知道所需解决方案的精度时,它就可以工作...
#include <stdio.h>
#include <math.h>
int main(int argc, char * argv[]) {
float i = 5.3 / 4.7;
float j = 5.3 / 4.7;
printf("i %f \n", round(i * 10000.0) / 10000.0);
printf("j %f \n", round(j * 10000.0) / 10000.0);
return 0;
}