前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >double 转 BigDecimal 失真问题

double 转 BigDecimal 失真问题

作者头像
全栈程序员站长
发布于 2022-08-19 11:56:07
发布于 2022-08-19 11:56:07
1K0
举报

大家好,又见面了,我是你们的朋友全栈君。

最近在看银行家算法的时候发现原博文中用的BigDecimal 有问题,所以总结了BigDecimal 失真问题,自己也总结了几种经常用的转换方式,并且列出来,以防以后忘记,代码如下

double db = 211288.555; String str = “211288.555”; BigDecimal rw = BigDecimal.valueOf(db);// 不失真 BigDecimal rw2 = new BigDecimal(db);// 这种用法会失真,要小心 BigDecimal rw3 = new BigDecimal(str);// 不失真 BigDecimal rw4 = new BigDecimal(Double.valueOf(db));// 这种用法会失真,要小心 System.out.println(“rw==” + rw); System.out.println(“rw2==” + rw2); System.out.println(“rw3==” + rw3); System.out.println(“rw4==” + rw4);

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/136209.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月4,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java中double转BigDecimal的注意事项
3,把这个float变量赋值给一个 BigDecimal对象,用的是BigDecimal的double参数的构造:
全栈程序员站长
2022/08/15
1.3K0
double转BigDecimal精度丢失的解决方案。
因为double有精度丢失的问题,所以关于小数点的计算通常使用BigDecimal来计算。 但直接调用BigDecimal的double构造函数,会出现精度丢失问题。
全栈程序员站长
2022/09/06
1.3K0
double 转BigDecimal 丢失精度问题解决
错误方式 BigDecimal bigDecimal = new BigDecimal(0.11D); logger.info(“bigDecimal====”+bigDecimal); //bigDecimal0.11000000000000000055511151231257827021181583404541015625 正确方式: BigDecimal bigDecimal1 = bigDecimal.valueOf(0.11D); logger.info(“bigDecimal1“+bigDecimal1); // bigDecimal1====0.11
全栈程序员站长
2022/09/05
7040
Java BigDecimal的使用[通俗易懂]
Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度。所以开发中,如果我们需要精确计算的结果,则必须使用BigDecimal类来操作啦!
全栈程序员站长
2022/06/26
4390
丸辣!BigDecimal又踩坑了
小菜之前在国内的一家电商公司自研电商项目,在那个项目中是以人民币的分为最小单位使用Long来进行计算
菜菜的后端私房菜
2024/08/20
4140
double转BigDecimal精度丢失[通俗易懂]
很多人在double或float转BigDecimal时习惯使用BigDecimal的构造方法new BigDecimal(33.33),此种写法会存在精度丢失问题,下面就具体实例带大家体会:
全栈程序员站长
2022/09/05
2.4K0
java 的double转BigDecimal的坑
大家都知道java的double由于精度问题会给你挖无数个坑, 一般采取的方式都会避免使用, 但是android的dbflow对model里面的BigDecimal转换为sqlite table时, field type居然是text. 所以, model里面field的属性只能保持double
全栈程序员站长
2022/09/01
8870
关于Bigdecimal比较大小
java中对bigdimical比较大小一般用的是bigdemical的compareTo方法;
全栈程序员站长
2022/09/06
1.1K0
下次谁再这么用BigDecimal就直接开除
今日推荐文章:使用云开发平台 0 代码开发一个 AI 智能助手小程序-腾讯云开发者社区-腾讯云
半月无霜
2024/11/21
1390
double 转 BigDecimal 精度问题
很明显,经过 double 转 BigDecimal 后,我们最初的值已经发生变化,所以通常我们在做类型转换的时候推荐使用 BigDecimal.valueOf(…);
全栈程序员站长
2022/09/05
1.4K0
Java BigDecimal详解
借用《Effactive Java》这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦。
全栈程序员站长
2022/09/06
8210
Double转BigDecimal的坑
掉支付Api的时候对金额是十分敏感的。这里转换的时候一定要注意。使用Double.toString(x),或者BigDecimal.valueOf(x)
全栈程序员站长
2022/09/05
1.5K0
解决double转 BigDecimal 时出现的精度失真问题
比如,double dd=344999.03d; 转成 BigDecimal 类型,BigDecimal ss=new BigDecimal(dd); 打印 ss 的值是344999.03000000002793967723846435546875 精度失真啦!
全栈程序员站长
2022/09/05
2.9K0
不掌握这些坑,你敢用BigDecimal吗?
一直从事金融相关项目,所以对BigDecimal再熟悉不过了,也曾看到很多同学因为不知道、不了解或使用不当导致资损事件发生。
程序新视界
2022/07/29
1.4K0
不掌握这些坑,你敢用BigDecimal吗?
新手小白学JAVA 正则表达式 包装类 自动装箱/自动拆箱 BigDecimal
正确的字符串格式规则。 常用来判断用户输入的内容是否符合格式的要求,注意是严格区分大小写的。
全栈程序员站长
2022/08/15
3060
新手小白学JAVA 正则表达式 包装类 自动装箱/自动拆箱 BigDecimal
bigdecimal除法运算保留两位小数_bigdecimal保留两位小数显示00
问题: 将两个long类型的数相除后转换为BigDecimal类型并保留两位小数。
全栈程序员站长
2022/11/09
4.1K0
为什么阿里开发手册建议使用 BigDecimal 来进行浮点数的运算?
大家好,我是 Guide。《阿里巴巴 Java 开发手册》中提到:“为了避免精度丢失,可以使用 BigDecimal来进行浮点数的运算”。
Guide哥
2021/12/15
1.2K0
为什么阿里开发手册建议使用 BigDecimal 来进行浮点数的运算?
BigDecimal加减乘除计算
前阵子做题遇到了大数的精确计算,再次认识了bigdecimal 关于Bigdecimal意外的有许多小知识点和坑,这里特此整理一下为方便以后学习,希望能帮助到其他的萌新
全栈程序员站长
2022/07/23
1.9K0
BigDecimal加减乘除计算
BigDecimal知识回顾
我们之前做的民生银行的培训系统时大量的用到了BigDecimal用于计算学分和金额等数据,那为什么这类数据不用double而是用Bigdecimal,接下来进行小结一下
在水一方
2022/06/14
8140
BigDecimal知识回顾
BigDecimal 与 int,long,double之间的互转[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140956.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/01
1.7K0
相关推荐
Java中double转BigDecimal的注意事项
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文