NDe*_*vox 0 python decimal python-3.x
我正在将我使用浮点数制作的程序转换为小数.
显然,我这样做的主要原因是准确性.
我之前没有使用过十进制,所以我想先玩一下.我做的第一件事是:
>>> x = Decimal(7.2)
>>> x
Decimal('7.20000000000000017763568394002504646778106689453125')
Run Code Online (Sandbox Code Playgroud)
现在考虑小数意味着准确,并避免像浮动一样长拖尾数字,我很惊讶地看到这种情况发生.尽管标准预设为28,但它也达到了50 DP(并且无论你设置预设也无关紧要.
这是一个错误(|功能)?为什么会这样?
Decimal(7.2)将从float的确切值创建一个小数7.2.由于浮点数Decimal不精确,同时,创建小数将会将浮点数的不准确性转换为小数,从而产生您在那里看到的结果.
要创建7.2的精确小数,您需要将其指定为字符串:
Decimal('7.2')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |