float、double计算中精度丢失的处理
2017-11-08 15:42
507 查看
参考http://blog.csdn.net/luweicheng24/article/details/77800688
37.1
37.1
37.1
3709.9998
3709
3709.9998
37.1
100.0
3710.00
3710
import java.math.BigDecimal; public class T { public static void main(String[] args) { String aaString="37.10"; System.err.println(Double.valueOf(aaString)); System.err.println(Float.valueOf(aaString)); float amount =37.10f; float amount2 =amount*100; float amount4 =amount*100f; long amount3 =(long)amount2; System.err.println(amount); System.err.println(amount2); System.err.println(amount3); System.err.println(amount4); // BigDecimal bigDecimal1 = new BigDecimal(Float.toString(amount)); System.err.println(bigDecimal1); BigDecimal bigDecimal2 = new BigDecimal(Float.toString(100)); System.err.println(bigDecimal2); BigDecimal result = bigDecimal1.multiply(bigDecimal2); System.err.println(result); long longValue =result.longValue(); System.err.println(longValue); } }
37.1
37.1
37.1
3709.9998
3709
3709.9998
37.1
100.0
3710.00
3710
1、String 转 float不会丢失精度; 2、float乘法计算会丢失精度、 乘积总是在一个正确的结果左右偏0.0000**1,这是因为当两个float数值相乘时,底层采用转换成二进制来进行乘法的运算 3、采用BigDecimal 可以实现高精度运算
相关文章推荐
- iOS - Json解析精度丢失处理(NSString, Double, Float)
- java中double、float类型计算精度丢失问题
- java中float/double计算丢失精度解决方案
- iOS - Json解析精度丢失处理(NSString, Double, Float)
- Java浮点数float和double精确计算的精度误差问题总结
- Java中float,double为什么会丢失精度。
- Java浮点数float和double精确计算的精度误差问题总结
- 偶尔看到有关float/double计算精度的问题,做个backup
- java float double精度为什么会丢失?浅谈java的浮点数精度问题 【转】
- 偶尔看到有关float/double计算精度的问题,做个backup
- 关于float,double的精度丢失(一)
- Java中用浮点型数据Float和Double进行精确计算时的精度问题
- java中的float double精度为什么会丢失?
- float,double等精度丢失问题
- Java中float,double为什么会丢失精度。
- double和float计算精度不准的问题
- java float double精度为什么会丢失?浅谈java的浮点数精度问题
- 关于double,float的精度丢失(二)
- Double,Float精度丢失
- C++、C中有关double、float类型转换成int型,及取整,丢失精度问题。