码迷,mamicode.com
首页 > 其他好文 > 详细

float及double类型减法运算时精度丢失问题

时间:2014-10-05 03:48:28      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:java   double   float   加减法   精度   

        当float和double类型在进行减法运算时,会出现精度丢失问题,这种问题主要是由于计算机中普遍使用2进制所造成的。在此做为记录,防止日后遗忘。

    public static void main(String[] args) {
        float a = 2.1f;
        float b = 2.0f;
        float c = a - b;
        System.out.println("a-b=" + c);
    }
    //输出:a-b=0.099999905

这种情况下需要使用BigDecimal类

BigDecimal add(BigDecimalaugend) 加法运算

BigDecimal subtract(BigDecimal subtrahend) 减法运算

BigDecimal multiply(BigDecimal multiplicand) 乘法运算

BigDecimal divide(BigDecimal divisor) 除法运算

    public static void main(String[] args) {
        float a = 2.1f;
        float b = 2.0f;
        BigDecimal a1 = new BigDecimal(Float.toString(a));
        BigDecimal b1 = new BigDecimal(Float.toString(b));
        float c1 = a1.subtract(b1).floatValue();
        System.out.println("a1-b1=" + c1);
    }
    //输出:a1-b1=0.1

详细原理参照http://www.blogjava.net/jelver/articles/340038.html

本文出自 “塞上名猪” 博客,请务必保留此出处http://zuohao1990.blog.51cto.com/6057850/1560642

float及double类型减法运算时精度丢失问题

标签:java   double   float   加减法   精度   

原文地址:http://zuohao1990.blog.51cto.com/6057850/1560642

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!