我的浮点数精度有问题:
int main(void) {
double b = 106.829599;
float a = b;
std::cerr << std::setprecision(6) << "a = " << a << "; b = " << b << std::endl;
std::cerr << std::setprecision(7) << "a = " << a << "; b = " << b << std::endl;
}
结果是:
a = 106.83; b = 106.83
a = 106.8296; b = 106.8296
所以,我的问题是为什么第一行的数字如此短(我期望看到 106.829)
gcc 4.1.2,我也做了测试LWS http://liveworkspace.org/code/1040f80065e51e9e0e7fee838f991542
实际上,106.829599 四舍五入到 6 位(3 位小数)为 106.830,由于给予了 6 位精度,因此显示为 106.83设置精度 https://cplusplus.com/reference/iomanip/setprecision/只是一个最大值。
小数精度决定了最大位数成为
写在插入操作上以表达浮点值。
您可能正在寻找将 set precision 与fixed https://cplusplus.com/reference/ios/fixed/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)