程序语言浮点数运算问题
2019-01-11 本文已影响0人
渭小粉
在程序语言当中,一些数是无法通过浮点数来精确表示的,如 0.1 * 3,可能你会预料到得到的结果是0.3,然而现实很残酷,你会得到如下的这个答案
:0.30000000000000004,浮点数运算是根据二进制算法来进行计算的,所以并不某种语言特有的结果。
当出现上述情况的时候,一般情况下,我们可以通过程序语言强制转换、保留有效小数点等措施来去除末尾的多个0,在一般情况下,是不会影响程序的正常执行的。
当然,如果这些类似于银行这样的系统当中,一丝一毫的差错都是不能有的,所以,这个时候(以java说明),应该使用BigDecimal类型来替代基本类型,从BigDecimal的源代码中可以知道,从构造参数众传入的数一定要是字符串,否则仍然会以基本类型来处理!