【发布时间】:2020-06-17 16:00:22
【问题描述】:
我想打印一个非常接近一的浮点数,将其截断到小数点后 2 位而不进行四舍五入,最好使用尽可能少的代码。
a = 0.99999999999
print(f'{a:0.2f}')
Expected: 0.99
Actual: 1.00
【问题讨论】:
-
乘以100,调用
math.floor(),然后除以100。 -
@Barmar 也许
trunc而不是floor让它也适用于负数? (不相关,如果已知输入接近 1 并因此为正) -
对于数字“非常接近一”,乘以 100 会产生舍入,可能形成乘积 == 100.0。相反,将舍入模式设置为 0,然后打印到小数点后 17 位以上,并在
.之后删除除 2 位以外的所有数字。
标签: python floating-point decimal f-string