怎样使小数运算更加精确

来源:互联网 发布:阿尔法贝塔剪枝算法 编辑:程序博客网 时间:2024/05/01 07:57
 
       小明在超市购买了一个价值1.1元的口香糖,但他只有2元面额的钞票,那么应该找他多少零钱呢?
       这样一个简单的问题,我们也许会这样去写程序:
public class Change
{
    
public static void main(String args[])
    {
        System.out.println(
2.00 - 1.10);
    }
}
   你肯定会期望该程序能够打印出0.9,但结果是不是呢?在亲自运行后你会发现,结果是0.8999999999999999这样一个令人厌恶的结果。
       这个结果的原因在于并不是所有的小数都可以用二进制浮点数来精确表示的,会出现意想不到的误差,那么对于货币财务这样需要精确计算的问题是非常致命的。那么怎样解决呢?
       答案很简单,我们只需要把小数转换成整数再计算,得到的结果再转换成小数就可以得到正确的结果,如下:
public class Change
{
    
public static void main(String args[])
    {
        System.out.println((
2.00*10 - 1.10*10)/10);
    }
}
原创粉丝点击