【发布时间】:2012-11-01 22:48:30
【问题描述】:
如何使用 stringstream 打印双数点后的 max 个小数位数(无尾随零且无舍入)?例如,如果我只想打印最多 5 个小数位:
1 -> 1
1.23 -> 1.23
1.234 -> 1.234
1.2345 -> 1.2345
1.23456 -> 1.23456
1.234567 -> 1.23456
1.2345678 -> 1.23456
1230.2345678 -> 1230.23456 <- Demonstrating that I am not talking about significant digits of the whole number either
等等
在我看到的所有工具(setw、setprecision、fixed 等)中,我似乎无法弄清楚这一点。谢谢!
【问题讨论】:
-
一般没有这种东西。例如,当转换为二进制浮点数时,
1.1将作为重复数字结束。你上面给出的大多数数字只能近似为浮点数,代码基本上不可能猜测存储的 1.22999999997 是否真的是你想要的,或者它最初是 1.23而是。 -
非常大或非常小的数字呢?喜欢
1.0003e-15 == 10.003e-14?