python - python3 十进制计算当值用引号括起来时会有所不同
问题描述
python 中的十进制变量通过算术运算给出不同的结果,具体取决于分配值时数字是否用引号括起来。
>>> x = Decimal(5.36)
>>> y = Decimal(10.56)
>>> x * y
Decimal('56.60160000000000604245542490')
>>> x = Decimal('5.36')
>>> y = Decimal('10.56')
>>> x * y
Decimal('56.6016')
我在这里想念什么?
解决方案
第一种情况下的输入值是一对浮点数,根据定义,它们是不精确的。另请参阅浮点数学是否损坏?
在第二种情况下,字符串可以直接转换为Decimal
内部表示,这是精确的。
您可以自己验证这一点:
>>> x = Decimal(5.36)
>>> print(x)
5.36000000000000031974423109204508364200592041015625
>>> y = Decimal(10.56)
>>> print(y)
10.5600000000000004973799150320701301097869873046875
推荐阅读
- xslt - 使用 XSLT 为同一 XML 层次结构中的多个子节点添加父节点
- android - Firebase - 用户属性显示在“DebugView”中,但不在“用户属性”中(即使几天后也不显示)
- haskell - Haskell wiki 中的“类别法则”
- reactjs - 在基于 React 的设计系统中使用 FontAwesome 图标库
- google-api - 从 Google Drive 获取一个文件的内容,同时避免 Google 的安全评估
- javascript - 将 unix 时间戳转换为本地时间
- .net - .Net Core Web Windows 身份验证面向 500.30
- python - 当我在 Django 中创建 for 循环时,为什么我的 swipper 3d 滑块无法正常工作?
- c# - 未找到奇异化方法
- android - OpenGL ES 2.0 中多个对象的一对着色器