首页 理论教育 PythonDecimal学习:十进制浮点数

PythonDecimal学习:十进制浮点数

时间:2023-10-27 理论教育 版权反馈
【摘要】:因为浮点数只有52位有效数字,从第53位开始,就舍入了。这样就造成了“浮点数精度损失”问题。Python为此提供了另一种数字类型——Decimal。Decimal类型并不是内建的,因此使用它的时候需要导入decimal 模块,并使用 decimal.Decimal() 来存储精确的数字。将上面的浮点型运算改为十进制浮点型运算:再补充一个浮点型运算与十进制浮点型运算区别的实例如下

PythonDecimal学习:十进制浮点数

Python中,双精度浮点型数字的精度是有限的,这经常让一些需要高精度(如科学计算或金融应用程序)的程序员发狂,如: 

如前所述,Python为双精度浮点型数字分配了52位来存储浮点数的有效数字,虽然52位有效数字看起来很多,但麻烦之处在于,二进制小数在表示有理数时极易遇到无限循环的问题。其中很多在十进制小数中是有限的,比如十进制的1/10,在十进制中可以简单写为 0.1,但在二进制中,需要写成:0.0001100110011001100110011001100110011001100110011001…(后面全是 1001 循环)。因为浮点数只有52位有效数字,从第53位开始,就舍入了。这样就造成了“浮点数精度损失”问题。舍入(round)的规则为“0 舍 1 入”,所以结果有时会稍大一些有时候会稍小一些。 

有时编写程序需要指定精度,以便用于财务计算并生成可预期的结果。Python为此提供了另一种数字类型——Decimal。Decimal类型并不是内建的,因此使用它的时候需要导入decimal 模块,并使用 decimal.Decimal() 来存储精确的数字。这里需要注意的是:使用非整数参数时要记得传入一个字符串而不是浮点数,否则在作为参数的时候,这个值可能就已经是不精确的了。 (www.xing528.com)

将上面的浮点型运算改为十进制浮点型运算: 

再补充一个浮点型运算与十进制浮点型运算区别的实例如下

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈