2019-07-17 BigDecimal浮点数double,float的初始化的坑,你用对了吗?

这个死记硬背的规律我不擅长

import java.math.BigDecimal;

public class Test {

    public static void main(String[] args) {

        double d = 0.1D;
        float f = 0.1F;

        Double aDouble = Double.valueOf(d);
        Float aFloat = Float.valueOf(f);


        BigDecimal dbigDecimal = new BigDecimal(aDouble.toString());
        BigDecimal dbigDecimal1 = new BigDecimal(d);
        BigDecimal dbigDecimal2 = new BigDecimal(aDouble);
        BigDecimal dbigDecimal3 = BigDecimal.valueOf(d);
        BigDecimal dbigDecimal4 = BigDecimal.valueOf(aDouble);
        BigDecimal fbigDecimal = new BigDecimal(aFloat.toString());
        BigDecimal fbigDecimal1 = new BigDecimal(f);
        BigDecimal fbigDecimal2 = new BigDecimal(aFloat);
        BigDecimal fbigDecimal3 = BigDecimal.valueOf(f);
        BigDecimal fbigDecimal4 = BigDecimal.valueOf(aFloat);

        BigDecimal dbigDecimal = new BigDecimal(aDouble.toString());
        BigDecimal dbigDecimal1 = new BigDecimal(d);
        BigDecimal dbigDecimal2 = new BigDecimal(aDouble);
        BigDecimal dbigDecimal3 = BigDecimal.valueOf(d);
        BigDecimal dbigDecimal4 = BigDecimal.valueOf(aDouble);
        BigDecimal fbigDecimal = new BigDecimal(aFloat.toString());
        BigDecimal fbigDecimal1 = new BigDecimal(f);
        BigDecimal fbigDecimal2 = new BigDecimal(aFloat);
        BigDecimal fbigDecimal3 = BigDecimal.valueOf(f);
        BigDecimal fbigDecimal4 = BigDecimal.valueOf(aFloat);

        System.out.println("----");
        System.out.println("new BigDecimal(aDouble.toString()) :\n"+dbigDecimal);
        System.out.println("----");
        System.out.println("new BigDecimal(d) : \n"+dbigDecimal1);
        System.out.println("----");
        System.out.println("new BigDecimal(aDouble) :");
        System.out.println(dbigDecimal2);
        System.out.println("----");
        System.out.println("BigDecimal.valueOf(d) : ");
        System.out.println(dbigDecimal3);
        System.out.println("----");
        System.out.println("BigDecimal.valueOf(aDouble) :");
        System.out.println(dbigDecimal4);
        System.out.println("----");
        System.out.println("new BigDecimal(aFloat.toString())");
        System.out.println(fbigDecimal);
        System.out.println("----");
        System.out.println("new BigDecimal(f)");
        System.out.println(fbigDecimal1);
        System.out.println("----");
        System.out.println("new BigDecimal(aFloat)");
        System.out.println(fbigDecimal2);
        System.out.println("----");
        System.out.println("BigDecimal.valueOf(f)");
        System.out.println(fbigDecimal3);
        System.out.println("----");
        System.out.println("BigDecimal.valueOf(aFloat):" + (fbigDecimal4.compareTo(BigDecimal.valueOf(0.1D)) == 0));
        System.out.println(fbigDecimal4);

    }
}

公布答案

0.1
0.1000000000000000055511151231257827021181583404541015625
0.1000000000000000055511151231257827021181583404541015625
0.1
0.1
0.1
0.100000001490116119384765625
0.100000001490116119384765625
0.10000000149011612
0.10000000149011612

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容