Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以可预测的方式使用Python 2.7十进制的最佳实践(为了钱)_Python_Python 2.7_Floating Point - Fatal编程技术网

以可预测的方式使用Python 2.7十进制的最佳实践(为了钱)

以可预测的方式使用Python 2.7十进制的最佳实践(为了钱),python,python-2.7,floating-point,Python,Python 2.7,Floating Point,首先,我对Python有点陌生,我知道这个浮点算法看起来很基本,但我在SO中找不到任何重复/相关的问题 我有一个验收测试:期望3.3/3为1.1 然后我试着 from decimal import * >>> Decimal(3.3) / Decimal(3) Decimal('1.099999999999999940788105353') >>> Decimal(3.3) / Decimal(3.0) Decimal('1.0999999999999999

首先,我对Python有点陌生,我知道这个浮点算法看起来很基本,但我在SO中找不到任何重复/相关的问题

我有一个验收测试:期望
3.3/3
1.1

然后我试着

from decimal import *
>>> Decimal(3.3) / Decimal(3)
Decimal('1.099999999999999940788105353')

>>> Decimal(3.3) / Decimal(3.0)
Decimal('1.099999999999999940788105353')

>>> Decimal('3.3') / Decimal('3')
Decimal('1.1') # as expected
问:以可预测的方式使用Python decimal的最佳实践是什么?或者我只需要将每个十进制显示格式化为字符串

更具体地说:我正在为贷款数据报告编写一个小型自动化脚本

查看,可以为您的操作设置精度。默认值为28个小数点

from decimal import * getcontext().prec = 2 Decimal(3.3) / Decimal(3) 从十进制输入* getcontext().prec=2 十进制(3.3)/十进制(3) 这将返回“十进制('1.1')”

查看,可以为您的操作设置精度。默认值为28个小数点

from decimal import * getcontext().prec = 2 Decimal(3.3) / Decimal(3) 从十进制输入* getcontext().prec=2 十进制(3.3)/十进制(3)
这将返回“十进制('1.1')”

关键是在裸浮点
3.3
到十进制中,您已经受到浮点不精确性的影响:

>>> Decimal(3.3)
Decimal('3.29999999999999982236431605997495353221893310546875')

因此,是的,您应该始终传递字符串。

关键是在裸浮点
3.3
到十进制中,您已经受到浮点不精确性的影响:

>>> Decimal(3.3)
Decimal('3.29999999999999982236431605997495353221893310546875')

所以,是的,您应该始终传递字符串。

可能的重复项您不应该使用整数来赚钱吗?或者可能。可能是重复的。你不应该用整数来赚钱吗?或者可能。要获得可预测的输入精度,请使用字符串。要获得输出的可预测精度,请使用上下文的prec值。要获得输入的可预测精度,请使用字符串。要获得可预测的输出精度,请使用上下文的prec值。