java bigDecimal and double
Java BigDecimal和double
BigDecimal是Java中用来表示任意精确浮点数运算的类,在BigDecimal中,使用unscaledValue × 10-scale来表示一个浮点数。其中,unscaledValue是一个BigInteger,scale是一个int。从这个表示方法来看,BigDecimal只能标识有限小数,不过可以表示的数据范围远远大于double,在实际应用中基本足够了。
System.out.println(new BigDecimal(0.1).toString()); // 0.1000000000000000055511151231257827021181583404541015625 System.out.println(new BigDecimal("0.1").toString()); // 0.1 System.out.println(new BigDecimal( Double.toString(0.1000000000000000055511151231257827021181583404541015625)).toString());// 0.1 System.out.println(new BigDecimal(Double.toString(0.1)).toString()); // 0.1
分析一下上面代码的问题(注释的内容表示此语句的输出)
int x=(int)1023.99999999999999; // x=1024为什么?
原因还是在于二进制无法精确地表示某些十进制小数,因此1023.99999999999999在编译之后的double值变成了1024。
double d = 1023.99999999999999; int x = (int) d; System.out.println(new BigDecimal(d).toString()); // 1024 System.out.println(Long.toHexString(Double.doubleToRawLongBits(d))); // 4090000000000000 System.out.println(x); // 1024
前面提过BigDecimal可以精确地把double表示出来还记得吧。
转载于:https://www.cnblogs.com/yelongsan/p/4120913.html
java bigDecimal and double相关推荐
- Java BigDecimal和double区别
转自: https://www.cnblogs.com/mingforyou/p/3344489.html BigDecimal类 对于不需要任何准确计算精度的数字可以直接使用float或doubl ...
- Java BigDecimal类的一般使用、BigDecimal转double
BigDecimal大据类. 浮点型运算的时候直接 加减乘除时可能会出现数据失真(精度问题). BigDecimal可以解决浮点型运算数据失真的问题. double a = 0.1;double b ...
- java总结:double取两位小数的多种方法
1.方法一四舍五入:import java.math.BigDecimal;double f = 111231.5585; BigDecimal b = new BigDecimal(f); doub ...
- java bigdecimal赋值_Java中BigDecimal类介绍及用法(亲测)
Java中提供了大数字(超过16位有效位)的操作类,即 java.math.BinInteger 类和 java.math.BigDecimal 类,用于高精度计算. 其中 BigInteger 类是 ...
- Java BigDecimal初探
更新时间:2016-03-17 一.引言 <Effactive Java>中有这样的描述:float和double类型的主要设计目标是为了科学计算和工程计算.他们执行二进制浮点运算,这是为 ...
- Java:对double值进行四舍五入,保留两位小数的几种方法
转载自 Java:对double值进行四舍五入,保留两位小数的几种方法 1. 功能 将程序中的double值精确到小数点后两位.可以四舍五入,也可以直接截断. 比如:输入12345.6789,输出 ...
- Java BigDecimal valueOf()方法与示例
BigDecimal类的valueOf()方法 (BigDecimal Class valueOf() method) Syntax: 句法: public static BigDecimal val ...
- Java BigDecimal 转换,除法陷阱(转)
源地址: http://blog.csdn.net/niannian_315/article/details/24354251 今天在用BigDecimal"出现费解"现象,以 ...
- Java学习之double类型数据比较
Java学习之double类型数据比较 对于两个double类型的数据,是不能直接用==来比较是否相等 double a=1.01; double b=1.01; if(b==a){System.ou ...
最新文章
- DPDK — TestPMD
- ajax请求php保存数据格式,jQuery ajax与php进行数据交互(数据格式问题)
- 服务部署如何做到高可用?这份“三级跳”秘籍送给你
- 设置textview背景色为透明
- 所请求vi未加载至服务器内存_linux下tomcat端口请求数太大,导致服务器资源加载过慢的配置优化...
- java 本季度_Java获取当天、本周、本月、本季度、本年等 开始及结束时间
- boot sprint 项目结构_完美起航-【知识】SpringBoot项目结构目录
- EXCEL 分列功能的使用
- excel 汉字转拼音
- 驱动开发:实现驱动加载卸载工具
- 手机照片分辨率dpi怎么调?一寸证件照照片dpi怎么调300?
- Siebel命令行修改LDAP
- coldfusion php,PHP加密代码转换为ColdFusion
- 热设计功耗(TDP)与功耗(P)
- 计算机开机时前按什么键,开机怎么进入bios?电脑开机按什么键进入BIOS方法大全...
- 安卓应用 - 公开市场上传投放
- matlab矩阵按位取反,第二章matlab的理基本使用方法.ppt
- WSTMart 国内开源商城系统佼佼者
- 僵木蠕病毒快速处置建议(零成本)
- Blueprint介绍和使用
热门文章
- jQuery以JSONP的访问调用一个WCF REST服务
- C#中字符串保留双引号
- unity3d 人员控制代码
- 洛谷P1828 香甜的黄油 Sweet Butter
- 社交大佬们的数据“大”在哪里?
- 企业如何寻找最合适的托管数据中心,以维持IT和业务的增长运营
- Docker监控方案(TIG)的研究与实践之Influxdb
- paper 35 :交叉验证(CrossValidation)方法思想
- vmware安装minimal centos报错/etc/rc5.d/s99local : line
- Xamarin开发IOS笔记:切换输入法时输入框被遮住