python-3.x - 为什么小数和仍然有浮点错误?
问题描述
我使用小数模块来尽量避免浮点错误。从十进制模块的纪录片中它说:
十进制数可以精确表示。相反,像 1.1 和 2.2 这样的数字在二进制浮点中没有精确的表示。最终用户通常不会期望 1.1 + 2.2 像二进制浮点那样显示为 3.3000000000000003。
但是当我尝试用小数求和时,我仍然会得到那些浮点错误。
decimal.Decimal(4.04)+decimal.Decimal(4.04)
>>Decimal('8.080000000000000071054273576')
为什么是这样?
解决方案
尝试在浮点文字周围放置字符串,如下所示:
decimal.Decimal('4.04')+decimal.Decimal('4.04')
在您问题的代码中,原始二进制(基数 2)"float"
类型被传递给Decimal
. 4.04
例如,当您使用字符串表示数字Decimal
时,'4.04'
精确地以 10 为基数表示。
推荐阅读
- css - 为什么 Safari 和 Chrome 上的汉堡动画不同?
- angular - Angular ng2-smart table 响应式
- react-native - 如何在原生反应中将边距应用于 SVG 图像?
- c# - 如何在 ML.NET 中将 ONNX 中的数据作为 float32[N,60,1] 插入
- python - 如何在任何条件下返回多索引中的所有索引
- android - Flutter:函数运行后获取变量
- sql - 在 Oracle SQL 中根据分组滚动总和条件选择行
- python - 值错误
- command-line - 在 Jupyter Notebook / 另一个程序运行时将命令传递给 Miniconda 提示符
- excel - Selenium (Excel) - 抓取用户点击的 iFrame