在 C 中,当设置了一个 float 时,
int main(int argc, char *argv[]) {
float temp = 98.6f;
printf("%f\n", temp);
return 0;
}
它似乎总是会出现某种舍入错误,
98.599998
但是当我让它更精确时,
float temp = 96.600000f;
它仍然打印不同的数字。这应该如何解决?
最佳答案
It still prints a different number. How is this supposed to be solved?
如果您想要精确的小数值,可以使用不同的数据类型。
二进制 float 是精确的——只是它们是精确的二进制值。
例如,如果您想表示以 3 为基数的数字,十进制也是不精确的。没有精确的二进制表示 0.1 的十进制数,就像没有精确的十进制表示“三分之一”一样。
这完全取决于您的要求是什么,并使用与其相匹配的数据类型。对于精确的十进制值,您可能最好使用第三方库……或者保留一个您知道在逻辑上按 100、10,000 或其他任何比例缩放的整数。
关于c - 使 C float 精确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17733835/