在金融领域,包括金融测试领域中,对于数值计算的准确性要求极高,特别是小数的长度和精度,小数是四舍五入还是截断舍尾。真可谓差之毫厘,谬以千里。本篇文章记录下在Python环境下如何执行精准的小数计算。如何精准的控制计算后的结果。
一,首先建议先学习下面这两篇文章,了解python3里面的数字类型。
Python3 基本数据类型
https://www.runoob.com/python3/python3-data-type.html
Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
PYTHON3基本数据类型(一、数字类型)
https://www.cnblogs.com/aiwanbuhui/p/7766352.html
二,然后,继续学习下面这篇文章,
Python四舍五入问题详解
https://blog.csdn.net/wangxichang/article/details/90606211
作者对于为什么在python中存在十进制小数表示的精度及进位困惑进行了原理的解释。即
float类型的二进制表示
1、float采用二进制编码描述浮点数。在二进制表示中,大多数有限位十进制小数无法使用二进制进行有限位精确表示。也就是说,有限位数的十进制小数,往往会变为无限位数的二进制小数。
事实上,分母中含有非2质数因子的分数,都不能使用有限位二进制小数表示。而十进制小数分母中含有质数因子5,如果约分后分母中仍然含有因子5ÿ