在Python中,我使用的格式字符串有逗号分隔符和舍入。但四舍五入并不一致。例如
>>> '{:,.0f}'.format(1.5)
'2' # Here it is increasing to next integer
>>> '{:,.0f}'.format(2.5)
'2' # Here it is suppose to give 3 as per the earlier logic.
取决于它前面的小数点。如果它是偶数,那么Python将通过增加整数值进行舍入,对于奇数则相反。在
有人能帮我把所有数字都修约一致吗
Tags:
实际上,
.format()
的取整方式与您预期的不同。在IEEE floating point standard定义了两种不同的舍入到最近数的方法。你以为它会从零开始呢
另一种方法是四舍五入到偶数:
^{pr2}$这种方法是无偏的,因为四舍五入的数字的总和/平均值更有可能与原始数字的总和/平均值相匹配。这就是为什么IEEE建议将此规则作为舍入的默认规则。在
四舍五入的实现因功能、版本而异。以下是不同表达式的取整方式:
另请参见dawg's answer,了解如何使用Decimal module选择自己的舍入行为。和John La Rooy has answeredasimilar question
浮点数可能会有一点变化,不可预测的,如1.5可能是1.499999或1.5000001。所以你不能期望0.5个锐利值的结果是一样的。在
在这种情况下,有很多方法可以解决,比如加一个像0.0001这样的小数值
相关问题 更多 >
编程相关推荐