java中double类型精度丢失问题及解决方法

内容分享2个月前发布
0 0 0

作者:晨光Jason

来源:
https://blog.csdn.net/yacolspace/article/details/78287394

今天在项目中用到double类型数据加减运算时,遇到了一个奇怪的问题,列如1+20.2+300.03,理论上结果应该是321.23,实则结果并不是这样。

java中double类型精度丢失问题及解决方法

打印结果如下:

java中double类型精度丢失问题及解决方法

这是为什么呢?又该如何解决呢?

在使用Java中double 进行运算时,常常出现精度丢失的问题,总是在一个正确的结果左右偏0.0000**1。float和double只能用来做科学计算或者是工程计算,在商业计算中我们要用 java.math.BigDecimal。BigDecimal一共有4个够造方法,我们只思考两个进行比较,分别是

BigDecimal(double val)
          Translates a double into a BigDecimal.
BigDecimal(String val)
          Translates the String repre sentation of a BigDecimal into a BigDecimal.

上面的API简要描述相当的明确,而且一般情况下,上面的那一个使用起来要方便一些。我们可能想都不想就用上了,会有什么问题呢?

现贴出BigDecimal的一个构造函数的文档供大家参考

java中double类型精度丢失问题及解决方法

解决方法

信任从上面的文档大家也已经找出了解决方法,在需要准确的表明两位小数时我们需要把他们转换为BigDecimal对象,然后再进行运算。

另外需要注意,使用BigDecimal(double val)构造函数时仍会存在精度丢失问题,提议使用BigDecimal(String val)。这就需要先把double转换为字符串然后在作为BigDecimal(String val)构造函数的参数。转换为BigDecimal对象之后再进行加减乘除操作,这样精度就不会出现问题了。这也是为什么有关金钱数据存储都使用BigDecimal。

处理double类型数据的加、减、乘、除运算时,使用如下方法:

java中double类型精度丢失问题及解决方法

java中double类型精度丢失问题及解决方法

验证文章开头提到的问题是否解决,

public double addDouble() {
        double result1 = add(120.2);
        double result2 = add(result1, 300.03);
        System.out.println("使用BigDecimal时结果值:" + result2);
        return result2;
    }

打印结果值

java中double类型精度丢失问题及解决方法

跟预想中的结果值一样,解决了double类型数据加减操作时精度丢失的问题。

© 版权声明

相关文章

2025 年的 AIGC 浪潮,你赶上了吗?AIGC 技术正以摧枯拉朽之势,重塑各行各业的格局,从内容创作到电商营销,从影视娱乐到智能教育,到处都有它的身影。据权威数据预测,2025 年 AIGC 市场规模将突破万亿,可人才缺口却高达 200 万 +,这意味着什么?这意味着机遇,一个让你逆袭的绝佳机遇!而拿下 AIGC 应用工程师证书,就是抓住这个机遇的关键。【权威认证,行业硬通货】我们考的这个 AIGC 应用工程师证书,由工信部教育与考试中心颁发。工信部的权威性不言而喻,这张证书就是你踏入 AIGC 行业的 “金字招牌”。它是企业招聘 AIGC 岗位的重要筛选标准,在腾讯、字节跳动等大厂,以及众多中小科技企业中,都有着极高的认可度。有了它,你在求职时就能脱颖而出,获得优先录用的机会。【薪资诱人,职业发展无忧】薪资方面,AIGC 应用工程师简直不要太香。初级工程师月薪轻松 1.5 万 – 3 万,随着经验积累和技能提升,资深专家年薪 60 万 – 150 万都不在话下,甚至大模型训练工程师年薪超 200 万。而且职业发展路径十分清晰,从初级工程师起步,逐步晋升为 AIGC 产品经理、技术总监,或者转型成为自由职业者,承接高收益项目,未来晋升空间巨大。【报考条件亲民,零基础可学】很多宝子担心自己基础不够,不敢报考。别慌!中级证书报考条件超宽松,大专学历有 1 年工作经验,或者本科应届生,专业不限都能报考;高级证书要求本科学历 + 2 年 AIGC 相关经验,或者硕士学历。就算你是零基础小白,只要对 AIGC 感兴趣,愿意学习,都有机会拿下这张证书,开启高薪职业之路。【学习内容丰富,紧跟行业前沿】学习内容涵盖了当下最热门、最实用的 AIGC 技术。你将系统学习大模型原理,掌握 Stable Diffusion、Midjourney、GPT – 5 等主流工具链的使用技巧,学会进行大模型微调(LoRA、P – Tuning)、提示词工程优化,了解多模态生成技术以及 AI 版权合规审查等重要知识。这些技能都是企业急需的,学完就能直接应用到工作中。【报考流程简单,拿证快人一步】报考流程也很简单。首先,通过工x部教考中心官网核验,选择正规的授权机构提交报名材料,包括身份证、学历证明、2 寸蓝底照等。然后,开通线上课程,开启系统学习之旅,完成培训并取得合格证明。每年 3 月、6 月、9 月、12 月参加机考,考试时间 120 分钟,线上或线下形式都有。考后 15 天就能查成绩,60 分合格,45 天左右就能拿到官网可查的证书,快人一步踏入 AIGC 高薪赛道。不管你是技术转型者,想从传统编程领域转向 AIGC 工程化方向;还是创意从业者,如设计师、文案策划,希望借助 AI 提升创作效率;亦或是企业管理者,想布局 AIGC 战略,为企业赋能;甚至是大学生,想在毕业时增加就业竞争力,这个证书都非常适合你。别再犹豫了,抓住这波 AIGC 的风口,考下 AIGC 应用工程师证书,让自己的职业发展更上一层楼。#AIGC #考证 #高

暂无评论

none
暂无评论...