Java数据精度
来源:互联网 发布:英国cpi数据 编辑:程序博客网 时间:2024/04/30 10:14
浮点类型数据进行计算时:
System.out.println(“double 99.9 * 9.9 ” + 99.9 * 9.9);
ddd = new BigDecimal(99.9 * 9.9);
System.out.println(“double 99.9 ” + ddd);
此时结果为
double 99.9 * 9.9 989.0100000000001
我们都知道,99.9×9.9=989.01,那么为什么出现很多00000001呢,这就是因为Java数据运算时的精度问题,那么其解决办法有如下
ddd = new BigDecimal(“99.99”).multiply(new BigDecimal(“9.9”));
System.out.println(“new BigDecimal ” + ddd);
ddd = BigDecimal.valueOf(99.99).multiply(BigDecimal.valueOf(9.9)); System.out.println("BigDecimal.valueOf " + ddd);
可以看出结果是
new BigDecimal 989.901
BigDecimal.valueOf 989.901
也许你会疑问,为什么要用new BigDecimal(“99.99”)或者BigDecimal.valueOf(99.99)呢?那我们来看其他的方式
// double
ddd = new BigDecimal(99.99);
System.out.println(“double 99.99 ” + ddd);
// double ddd = BigDecimal.valueOf(99.99); System.out.println("BigDecimal.valueOf double 99.99 " + ddd); // Double ddd = new BigDecimal(new Double(99.99)); System.out.println("Double 99.99 " + ddd); // String ddd = new BigDecimal("99.99"); System.out.println("String 99.99" + ddd); // double->String ddd = new BigDecimal(Double.toString(99.99)); System.out.println("double->String 99.99 " + ddd);
你就会发现如下结果
double 99.99 99.9899999999999948840923025272786617279052734375
BigDecimal.valueOf double 99.99 99.99
Double 99.99 99.9899999999999948840923025272786617279052734375
String 99.9999.99
double->String 99.99 99.99
使用BigDecimal的构造方法时,必须为string类型,否则,其精度就会出现问题。
- Java数据精度
- JAVA 数据类型与数据精度
- java中的数据精度计算问题
- java中处理数据精度丢失
- java中关于数据精度问题
- java中的double和float数据精度
- 数据精度
- (DecimalFormat) JAVA中确定数据的精度
- 关于java的double类型数据运算精度失真
- java.math.BigDecimal 对浮点数据的精度处理
- java Long类型转为json后数据损失精度
- 单精度数据
- 计算机单精度数据
- 单精度数据
- GLSL 数据精度
- cxgrid 控制数据精度
- BigDecimal 保住数据精度
- 数据精度问题
- 合并静态库
- 2016我来了,你呢!
- 切图工作流程
- [王垠系列]什么是“脚本语言”
- XMPP介绍一:服务器及数据库搭建
- Java数据精度
- 深入理解BootStrap -- 列表组(list-group)16
- 又学一招——linq 之 select 动态
- scala中集合的交集、并集、差集
- Windows 7 密码锁定无法登陆问题
- Android 布局优化之include与merge
- angular.element方法汇总
- 某客户使用RMAN数据库恢复测试步骤
- [王垠系列]谈“测试驱动的开发”