我在工作中,要计算系统本年成交额,累计成交额,但是关于金额该使用double还是float,陷入了思考中。
后来发现在金融计算中,必要的要使用BigDecimal,因为float和double都不太合适
比如a-b a的值为2,b的值为1.1 程序计算出来的是0.89999
因为计算机进行的是二进制,我们输入的十进制数字会先变成二进制,再变成十进制输出,float和double提供了快速的运算,然后问题在于转换二进制的时候,有些数字不能完全进行转换,只能无限接近于原本的值。就会导致结果不正确。
BigDecimal可以表示任意精度的小数,并进行计算。最好基于整数或string的构造函数来创建BigDecimal对象。