当前位置: 首页 > 知识库问答 >
问题:

为什么四舍五入0.5(小数)不准确?[副本]

后化
2023-03-14
>>> a,b,c = 0.49, 0.5, 0.51
>>> [round(x) for x in (a,b,c)]
[0, 0, 1]
>>> "%.0f %.0f %.0f" % (a,b,c)
'0 0 1'
>>> a,b,c = 0.049, 0.05, 0.051
>>> [round(x,1) for x in (a,b,c)]
[0.0, 0.1, 0.1]
>>> "%.1f %.1f %.1f" % (a,b,c)
'0.0 0.1 0.1'

如果一个数字有精确的二进制表示,比如(十进制)0.5,难道不应该正确地四舍五入吗?

编辑:该问题发生在3.4.3版本中,但不发生在2.7.6版本中

共有1个答案

甄飞飙
2023-03-14

我知道他们改变了python 3中的round方法。

因此,在V2.7.3下:

In [85]: round(2.5)
Out[85]: 3.0

In [86]: round(3.5)
Out[86]: 4.0

根据V3.2.3:

In [32]: round(2.5)
Out[32]: 2

In [33]: round(3.5)
Out[33]: 4
 类似资料:
  • 本节讨论了精度数学的四舍五入特性,ROUND()函数,以及插入DECIMAL列时的四舍五入特性。 ROUND()函数的行为取决于其参量是准确的还是近似的: ·对于准确值数值,ROUND()采用“半值向上舍入”规则:如果小数部分的值为.5或更大,如果是正数,向上取下一个整数,如果是负数,向下取下一个整数(换句话讲,以0为界限执行舍入)。如果小数部分的值小于.5,如果是正数,向下取下一个整数,如果是负

  • 问题内容: 如何获取float变量,并控制不使用round()的float的距离?例如。 我想把x做成下面的变量。 如果我使用各自的舍入方法: 它将四舍五入并将数字更改到对我没有用的程度。我了解这是解决问题的关键,并且工作正常。我该如何在x,y,z变量中获取所需的信息,并且仍然能够以浮点格式在其他方程式中使用它们? 问题答案: 你可以做: 测试:

  • 因此,为了保持精度,我必须将double转换为字符串,然后调用convert.todecimal(String): 这个方法是有效的,但是我想避免使用字符串变量来将Double转换为Decimal,而不是在15位数后取整?

  • 我如何四舍五入到两个小数位?

  • 获取以下数字集--> 当相加时,这些给出一个整数。