提问人:Givikap120 提问时间:6/19/2022 更新时间:6/19/2022 访问量:61
如何在 std::cout 中仍然不输出零的同时获得非科学输出?
How to get non scientific output while still not outputing zeros in std::cout?
问:
下面是一个示例:
std::cout << 1000000.0 << "\n";
std::cout << std::fixed << 1000000.0 << "\n";
std::cout << std::fixed << std::noshowpoint << 1000000.0 << "\n";
它会打印给我这个:
1e+06
1000000.000000
1000000.000000
但我想要这个:
1000000
如何在没有 IO 机械手的情况下做到这一点?
为什么没有?
因为我想打印:setprecision()
std::cout << 1000000.0 << " " << 1111111.1 << " " << 1234567.89;
并获得:
1000000 1111111.1 1234567.89
无需计算每个数字的精度
答:
1赞
Givikap120
6/19/2022
#1
当数字的位数高于精度时,使用科学输出。
例如,默认精度等于 6,但数字 1234567 有 7 位数字,因此将打印为 ,切断最后一位数字。
因此,要正常打印1234567,我们至少需要精度 = 7。
未添加“错误”数字的最高精度为 15,因此您需要使用 。1.23457+e06
std::setprecision(15)
法典:std::cout << std::setprecision(15) << 1000000.0 << " " << 1111111.1 << " " << 1234567.89;
外:1000000 1111111.1 1234567.89
评论
1赞
prapin
6/19/2022
我建议使用 15 位数字,因为小数点后第 16 位并不总是精确的。std::setprecision(15)
0赞
Givikap120
6/19/2022
好的,我测试了几个数字,所有数字都有 16 个,谢谢你的信息
下一个:如何检查程序是否为空?
评论
std::cout << static_cast<long>(1000000.0) << '\n';
cout
cout<<12.34
setprecision(16)
12.34001
12.34
12.34001