首页 新闻 会员 周边 捐助

Java数字类型数据转换异常?

0
[待解决问题]

String userId= "1095185405620432897.002";

Long l = new Double(userId).longValue();// 这里是将字符串转Double,然后利用Double类的方法转成Long
// l 的值为1095185405620432896
得到了的l 比userId少1;
小子无知,望大佬告知小子?

泡沫幻影的主页 泡沫幻影 | 初学一级 | 园豆:108
提问于:2019-12-25 10:17

double是有長度限制的

?,???? 4年前
< >
分享
所有回答(2)
0

不知道原因,换new BigDecimal(userId).longValue()

Timetombs | 园豆:3959 (老鸟四级) | 2019-12-25 10:56

谢谢

支持(0) 反对(0) 泡沫幻影 | 园豆:108 (初学一级) | 2019-12-25 11:46
0

精度的问题!用基本类型的double类型进行运算可能会丢失精度。
而且特别大的数又没法处理。所以如果用BigDecimal这个类问题就解决了。
BigDecimal maxlng1 = new BigDecimal(jdwd.get("userld").toString());
double minlat = minlat1.doubleValue();

慕言- | 园豆:208 (菜鸟二级) | 2019-12-25 11:45

谢谢

支持(0) 反对(0) 泡沫幻影 | 园豆:108 (初学一级) | 2019-12-25 11:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册