为什么 round() 在指数数上不能按预期工作?
Why doesn't round() work as expected on exponential numbers?
格式化数字有效并减少不需要的小数。 round()
函数给出与参数传递的相同值是否有原因?
number = 5.7821323121209e19
print(round(number,2)) # 5.7821323121209e19.
# Works.
print('%.3g' % number) # 5.78e19
print('{:.3g}'.format(number)) # 5.78e19
print(f'{number:.3g}') # 5.78e19
round(number, 2)
四舍五入到小数点后两位(即百分之一)。 5.7821323121209e19
太大以至于没有任何效果。是57821323121209000000
.
一切正常。 5.7821323121209e19
实际上是 5.7821323121209 * (10 ** 19)
所以它是一个数字,逗号后只有 0。
因此从数学的角度来看没有什么要四舍五入的。
看起来你想要 -17
而不是 2
:
>>> round(5.7821323121208e19, -17)
5.78e+19
格式化数字有效并减少不需要的小数。 round()
函数给出与参数传递的相同值是否有原因?
number = 5.7821323121209e19
print(round(number,2)) # 5.7821323121209e19.
# Works.
print('%.3g' % number) # 5.78e19
print('{:.3g}'.format(number)) # 5.78e19
print(f'{number:.3g}') # 5.78e19
round(number, 2)
四舍五入到小数点后两位(即百分之一)。 5.7821323121209e19
太大以至于没有任何效果。是57821323121209000000
.
一切正常。 5.7821323121209e19
实际上是 5.7821323121209 * (10 ** 19)
所以它是一个数字,逗号后只有 0。
因此从数学的角度来看没有什么要四舍五入的。
看起来你想要 -17
而不是 2
:
>>> round(5.7821323121208e19, -17)
5.78e+19