首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中,是否有隐藏规则来控制如何显示十进制数的精度?

在python中,是否有隐藏规则来控制如何显示十进制数的精度?
EN

Stack Overflow用户
提问于 2021-02-02 07:34:31
回答 1查看 91关注 0票数 3

对于python,请阅读以下链接:https://docs.python.org/3/tutorial/floatingpoint.html,“浮点算法:问题和限制”

我确实理解二进制表示浮点数与精确小数点表示浮点数之间存在不匹配(微小差异),例如。精确小数表示浮点数::1.005

python二进制表示的浮点数::1.00499999999999989341858963598497211933135986328125

下面是我在python中输入的内容:

代码语言:javascript
复制
>>> 1.005
    1.005
>>> from decimal import Decimal 
>>> Decimal(1.005)
    Decimal('1.00499999999999989341858963598497211933135986328125')

以下是我的问题:

  1. 为什么巨蟒在我输入1.005时显示为1.005?为什么不是1.00499999999999989341858963598497211933135986328125?
  2. 如果你告诉我python的整数是小数点后的一些数字,那么对于我的情况,舍入规则是什么?启动python时似乎存在默认舍入规则,如果存在此默认舍入规则,如何更改?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-02-02 17:20:49

当被要求将浮点值1.0049999999999999转换为string时,Python会以四舍五入的方式显示它:

代码语言:javascript
复制
>>> x = 1.0049999999999999; print(x)
1.005

根据juanpa链接的岗位,Python使用David算法来决定打印浮点数时要显示多少位数。通常显示在16位左右,这是有意义的,因为64位浮点数可以代表15到17位的重要数字。

如果要打印带有其他数字的浮点数,请使用带有精确说明符的f字符串或字符串内插(参见输入和输出- Python教程)。例如,用20位数字打印x

代码语言:javascript
复制
>>> print(f'{x:.20}')
1.0049999999999998934
>>> print('%.20g' % x)
1.0049999999999998934
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66005367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档