我试图强制浮点向上舍入到小数点后的第二位。我知道这不是最佳实践,但这正是我正在进行的项目所需要的。例如:
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
不确定这是否是最好的方法,但至少它似乎有效。在
欢迎来到浮点世界。阅读this以了解发生了什么。在
699 * 1.12
的结果不能由计算机精确表示,因此舍入结果不正确。在如果您只关心两个小数位,请考虑使用不同的类型,例如^{} 。在
相关问题 更多 >
编程相关推荐