解决Python中浮点数计算结果不够精确的问题:decimal模块
2017-08-02 22:04
337 查看
Python进行浮点数计算时存在着不够精确的问题。如下图:
其原因是Python在存储浮点数类型的数据时会存储一个近似的小数。解决方法为使用decimal模块。
decimal模块提供了一个数据类型Decimal用于浮点数计算,相比内置的浮点数类型float,Decimal这个类型有助于需要精确十进制表达的场合,或者用户希望计算结果与手算相符的场合。Decimal重现了手工的数学运算,这就确保了二进制浮点数无法精确保有的数据精度。
用一段简单的代码来说明:
from decimal import Decimal
def add(x,y):
return x+y
num1=Decimal(input())
num2=Decimal(input())
print(add(num1,num2))
其运算结果如下图:
其原因是Python在存储浮点数类型的数据时会存储一个近似的小数。解决方法为使用decimal模块。
decimal模块提供了一个数据类型Decimal用于浮点数计算,相比内置的浮点数类型float,Decimal这个类型有助于需要精确十进制表达的场合,或者用户希望计算结果与手算相符的场合。Decimal重现了手工的数学运算,这就确保了二进制浮点数无法精确保有的数据精度。
用一段简单的代码来说明:
from decimal import Decimal
def add(x,y):
return x+y
num1=Decimal(input())
num2=Decimal(input())
print(add(num1,num2))
其运算结果如下图:
相关文章推荐
- 解决javascript中的浮点数计算不精确问题
- Python安装MySQLDb模块的种种问题及解决
- python中cx_Oracle模块安装遇到的问题与解决方法
- 解决安装python第三方模块 '-mno-cygwin'报错的问题
- python中cx_Oracle模块安装遇到的问题与解决方法
- Python安装MySQLDb模块的问题及解决方法
- Python安装MySQLDb模块的种种问题及解决
- 解决Python引入模块后IDE可用,Eclipse不可用的问题
- python2.4升级到2.7后,解决安装json后模块不识别的问题
- Python使用urllib模块的urlopen超时问题解决方法
- [导入]js 浮点运算表达式 精确计算(vb没有这个问题)
- OSX下Python模块安装常见问题解决
- 在C#中解决动态计算表达式的问题(如字符串"Sin(1)+Cos(2)",执行并得出结果)
- python中cx_Oracle模块安装遇到的问题与解决方法
- excel 复制公式计算结果问题的解决方法
- Linux搭建python环境中cx_Oracle模块安装遇到的问题与解决方法
- Python安装MySQLDb模块的种种问题及解决
- Python入门经典 以解决计算问题为导向的Python编程 待完善
- Python十进制数学计算模块decimal