在C中,当一个浮点数被设置时,

int main(int argc, char *argv[]) {
    float temp = 98.6f;
    printf("%f\n", temp);
    return 0;
}

似乎总是会有某种舍入误差,
98.599998

但当我说得更准确的时候,
float temp = 96.600000f;

它仍然会打印一个不同的号码。怎么解决这个问题?

最佳答案

它仍然会打印一个不同的号码。怎么解决这个问题?
如果需要精确的十进制值,请使用其他数据类型。
二进制浮点数是精确的,只是它们是精确的二进制值。
同样地,如果你想用基数3来表示数字,十进制也是不精确的没有0.1十进制的精确二进制表示,就像没有“三分之一”的精确十进制表示一样。
这都是一个问题,找出你的需求是什么,并使用一个匹配它们的数据类型。对于精确的十进制值,最好使用第三方库或者保持一个整数,你知道它在逻辑上是按100,或10000或其他什么来缩放的。

关于c - 使C浮点数精确吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17733835/

10-11 12:55