在练习时,输入如下代码:
结果不准确。
原因:https://blog.csdn.net/bitcarmanlee/article/details/51179572
浮点数一个普遍的问题就是在计算机的世界中,浮点数并不能准确地表示十进制。并且,即便是最简单的数学运算,也会带来不可控制的后果。因为,在计算机的世界中只认识0与1
python中的decimal模块可以解决上面的烦恼
decimal模块中,可以通过整数,字符串或原则构建decimal.Decimal对象。如果是浮点数,特别注意因为浮点数本身存在误差,需要先将浮点数转化为字符串。
当然精度提升的同时,肯定带来的是性能的损失。在对数据要求特别精确的场合(例如财务结算),这些性能的损失是值得的。但是如果是大规模的科学计算,就需要考虑运行效率了。毕竟原生的float比Decimal对象肯定是要快很多的。
使用上述办法解决后:
知识点总结:
1. decimal模块:
Python提供了decimal模块用于十进制数学计算,它具有以下特点:
- 提供十进制数据类型,并且存储为十进制数序列;
- 有界精度:用于存储数字的位数是固定的,可以通过decimal.getcontext().prec=x 来设定,不同的数字可以有不同的精度
- 浮点:十进制小数点的位置不固定(但位数是固定的)