java 的double转BigDecimal的坑

java 的double转BigDecimal的坑大家都知道java的double由于精度问题会给你挖无数个坑,一般采取的方式都会避免使用,但是android的dbflow对model里面的BigDecimal转换为sqlitetable时,fieldtype居然是text.所以,model里面field的属性只能保持double那么,先测试一下:doubled=3.1415;…

大家好,又见面了,我是你们的朋友全栈君。

    大家都知道java的double由于精度问题会给你挖无数个坑, 一般采取的方式都会避免使用, 但是android的dbflow对model里面的BigDecimal转换为sqlite table时, field type居然是text. 所以, model里面field的属性只能保持double

    那么,先测试一下:

        double d = 3.1415;
        System.out.println(new BigDecimal(d));
        System.out.println(BigDecimal.valueOf(d));
        System.out.println(BigDecimal.valueOf(new Double(d)));
        System.out.println(new BigDecimal(new Double(d)));
        System.out.println(new BigDecimal(new Double(d).toString()));
        System.out.println(new BigDecimal("3.1415"));

输出如下

java 的double转BigDecimal的坑

double的普通运算则需要全部改为BigDecimal提供的加减乘除方法

// lvDet.issuedQty = item.requireQty - item.followQty;//item.issuedQty;
lvDet.issuedQty = BigDecimal.valueOf(item.requireQty).subtract(BigDecimal.valueOf(item
                        .followQty)).doubleValue();

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/140852.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号