Python2.7强制向上舍入2个小数位

2024-09-28 01:31:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图强制浮点向上舍入到小数点后的第二位。我知道这不是最佳实践,但这正是我正在进行的项目所需要的。例如:

100.00=100.00

100.001=100.01

100.009=100.01

我已经接近我需要的结果了数学.ceil我在另一篇文章中读到了一个提示,但是遇到了一个问题,如果输入的数字已经精确到小数点后2位,那么它将不必要地向上舍入。下面是一个例子:

import math

taxpcnt = 1.12
roomsubtotal = 699.00

roomttl = math.ceil(taxpcnt * roomsubtotal * 100) / 100

print roomttl

我认为它会返回782.88,因为699*1.12正好是782.88,但是它返回的却是782.89。更奇怪的是如果我打印taxpcnt*roomsubtotal,我得到782.88。如果我将代码改为:

^{pr2}$

我得到了正确的值。但总的来说,总的来说,这是不正确的。在

有什么小贴士可以帮我实现我的目标吗?在

编辑:我想我已经拼凑出一个解决方案:

import math

taxpcnt = 1.12
roomsubtotal = 699.00

rate = "%.2f" % (taxpcnt * roomsubtotal * 100)
rate = float(rate)

roomttl = math.ceil(rate) / 100

不确定这是否是最好的方法,但至少它似乎有效。在


Tags: 项目importrate文章数字数学math例子
1条回答
网友
1楼 · 发布于 2024-09-28 01:31:21

欢迎来到浮点世界。阅读this以了解发生了什么。在

699 * 1.12的结果不能由计算机精确表示,因此舍入结果不正确。在

>>> 699 * 1.12
782.8800000000001

如果您只关心两个小数位,请考虑使用不同的类型,例如^{}。在

相关问题 更多 >

    热门问题