为什么 round() 在指数数上不能按预期工作?

格式化数字可以有效并删除不需要的小数。该函数是否有理由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


犯罪嫌疑人X
浏览 170回答 3
3回答

郎朗坤

一切正常。5.7821323121209e19实际上是这样,它是一个逗号后面5.7821323121209 * (10 ** 19)只有0的数字。因此,从数学的角度来看,没有什么可以舍入的。

墨色风雨

看起来你想要-17而不是2:>>> round(5.7821323121208e19, -17) 5.78e+19

至尊宝的传说

round(number, 2)四舍五入到小数点后两位(即百分之一)。5.7821323121209e19太大了,不会产生任何影响。是的57821323121209000000。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python