ury*_*ury 5 c++ precision numbers stream
浮点数精度有问题:
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;
}
Run Code Online (Sandbox Code Playgroud)
结果是:
a = 106.83; b = 106.83
a = 106.8296; b = 106.8296
所以,我的问题是为什么第一行的数字如此之短(我期待看到106.829)
gcc 4.1.2,我也在LWS做了一个测试
实际上,106.829599四舍五入为6位(3位小数)是106.830,如给予106.83因为6位精度被显示setprecision仅仅是一个最大值.
小数精度确定在插入操作上写入的最大位数,以表示浮点值.
您可能正在寻找的是将setprecision与fixed固定相结合.