大家好,又见面了,我是你们的朋友全栈君。
大家都知道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"));
输出如下
double的普通运算则需要全部改为BigDecimal提供的加减乘除方法
// lvDet.issuedQty = item.requireQty - item.followQty;//item.issuedQty;
lvDet.issuedQty = BigDecimal.valueOf(item.requireQty).subtract(BigDecimal.valueOf(item
.followQty)).doubleValue();
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/140852.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...