java里强制类型转换导致的精度损失问题.
floatf;doubleg=123456789.123456789;f=(float)g;1输出的f是1.23456792E8求解释8怎么没了?9后面为什么是2...
float f;
double g=123456789.123456789;
f=(float)g;
1 输出的f是1.23456792E8 求解释 8怎么没了?9后面为什么是2 展开
double g=123456789.123456789;
f=(float)g;
1 输出的f是1.23456792E8 求解释 8怎么没了?9后面为什么是2 展开
展开全部
float 只有6个小数弯汪颂位是有意义的,陵态再后面的无意义,可能是任何东西。小数的表示法是 IEEE754 这种规则中确立的,对于像 1/3 这种无限小数,或无法被2整除的东西转换成2进制时都会可能有些不精确的地方,这个直接使埋郑用原始的办法是无法避免的,需要专门的针对数学运算的其它 API 来解决。
不过不清楚怎么不直接显示出来而要转换成 E 的表示法(这样平白弄出个小数位的问题来)。
在 Java 中如果你打算处理数字的运算,应该用 java.math.BigDecimal,不要直接使用基本数据类型。
不过不清楚怎么不直接显示出来而要转换成 E 的表示法(这样平白弄出个小数位的问题来)。
在 Java 中如果你打算处理数字的运算,应该用 java.math.BigDecimal,不要直接使用基本数据类型。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询