社区
Java SE
帖子详情
为什么java BigDecimal做浮点运行是精度准确的?他是怎么设计的?
赵王爷
2019-04-19 05:30:05
为什么java BigDecimal做浮点运行是精度准确的?他是怎么设计的?
...全文
301
回复
打赏
收藏
为什么java BigDecimal做浮点运行是精度准确的?他是怎么设计的?
为什么java BigDecimal做浮点运行是精度准确的?他是怎么设计的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Java
BigDecimal
解决
浮点
精度
问题
Java
浮点
类型 float 和 double 由于二进制存储方式,无法精确表示部分十进制小数,导致计算时出现
精度
问题。
BigDecimal
类通过整数和标度方式精确存储十进制数,是解决该问题的标准方案。创建时应避免使用
BigDecimal
(double) 构造方法,推荐使用字符串构造或 valueOf() 方法。
BigDecimal
提供完整的数学运算方法,除法运算必须指定舍入模式(如金融计算常用 HALF_UP 四舍五入)。使用时需注意其不可变性和精确计算特性,适用于金融、科学等需要高
精度
计算的场景
BigDecimal
为什么能
做
到高
精度
计算?
BigDecimal
的底层数据结构使什么?它是怎么保证
精度
的? 这曾经是一道阿里巴巴的面试题,由于在工作中使用最多的是
BigDecimal
的加、减、乘、除的的方法,还真没想过它的实现原理(完全是拿来主义惹的祸),乍这么一问还真有点懵。
BigDecimal
保证
精度
的解决思路其实极其的简单朴素,还是用一句话来解释:十进制整数在转化成二进制数时不会有
精度
问题,那么把十进制小数扩大N倍让它在整数的维度上进行计算,并保留相应的
精度
信息。 为什么要使用
BigDecimal
? 我想只要是从事过
JAVA
金融产品研发.
BigDecimal
一定不会丢失
精度
吗?
导读:我们基本已经形成了常识,需要用到金钱的地方要用
BigDecimal
而不是其他,而我们也都知道
浮点
型变量在进行计算的时候会出现丢失
精度
的问题。 那么,你知道其实
BigDecimal
也会丢失
精度
吗?而使用
BigDecimal
的背后又有什么值得去探究的地方吗?今天,告诉你,知其然,也知其所以然。 如下一段代码: 输出: 可以看到在
Java
中进行
浮点
数运算的时候,会出现丢失
精度
的问题。那么我们如果在进行商品价格计算的时候,就会出现问题。 很有可能造成我们手中有0.06元,却无法购买..
Java
BigDecimal
浮点
数运算为何不丢失
精度
详解
BigDecimal
通过其精确的十进制表示和运算机制,有效地解决了
浮点
数运算中的
精度
丢失问题。其
设计
原理、内部表示方式和丰富的运算方法,使其成为
Java
中处理高
精度
计算的首选工具。通过结合源代码的分析,我们可以看到
BigDecimal
在实现高
精度
运算的同时,也考虑到了性能和线程安全等方面的因素。然而,使用
BigDecimal
时也需要注意其性能开销,并根据具体应用场景进行合理选择。通过本文的详细阐述,大家能够深入理解
BigDecimal
的优势和应用方法,从而在实际开发中
做
出更明智的决策。
BigDecimal
为什么能保证
精度
不丢失?
您理解正确:
BigDecimal
使用 BigInteger 和 scale 分离数值和
精度
,通过十进制表示避免了
浮点
数的
精度
丢失问题,因此能够提供高
精度
计算。能够保证
精度
不丢失的关键在于其基于十进制的表示方式和严格的算术运算规则,而不会受到二进制表示的限制。是
Java
提供的一个用于高
精度
浮点
运算的类,能够有效避免
精度
丢失问题。其高
精度
特性得益于它的内部实现机制和使用场景。您的理解基本
准确
,
BigDecimal
通过内部的
设计
机制规避了
浮点
数转换的
精度
问题。明确规定了小数位的
精度
,防止
精度
丢失。
Java SE
62,625
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章