我正在学习 C++ Primer Plus,使用 Xcode 作为我的 IDE,其中一项练习要求将值 0.0254 分配给符号常量(将英寸转换为米)。问题是,当我声明常量时,我得到的值为 0.0253999997。我正在声明常量,如下所示。
#include <iostream>
const float METERS_PER_INCH = .0254;
最佳答案
这是由于 float 在以 2 为基数的数字系统中存储数字而导致的舍入误差问题(想想我们如何在以 10 为基数的数字系统中不四舍五入就不能写 1/3)。它会导致小的舍入错误,就像您在存储非基数 2 数字时看到的那样。
解决方案是使用整数或 bignum 库(我建议使用 GNU Multiple Precision library )。 bignumber 库使用整数来准确存储任意精度数字。
关于c++ - 浮点常量值不同,具体取决于它的声明方式 C++ (Xcode IDE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8365387/