Code Bye

数值计算后自动转为科学计数法出现误差

一个数字金额转大写金额的方法
        String fraction[] = {“角”, “分”};
        String digit[] = { “零”, “壹”, “贰”, “叁”, “肆”, “伍”, “陆”, “柒”, “捌”, “玖” };
在取角和分时是如下一行:
s += (digit[(int)(Math.floor(n * 10 * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll(“(零.)+”, “”);

但现在又一个案例,数字金额是2113826.01,转成大写金额后1分钱不见了

原因是这一行在计算时出现了:2113826.01*100=2.1138260099999997*10^8

本来是1的那一位变成了0
如何避免这种情况?

20分
用Bigdecimal类的试试看吧

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明数值计算后自动转为科学计数法出现误差