当前位置: 首页 > news >正文

BigDecimal对象比较时的注意事项

BigDecimal对象比较时的注意事项

[!NOTE]

在涉及到价钱和需要保证高精度的项目中我们往往使用BigDecimal对象来存储值,而在对象在进行比较时有一些地方需要注意(博主也是替大家踩了坑了🥲)

我们先来看下面这几行代码,思考他们的输出:

@Testpublic void test() {System.out.println(new BigDecimal(1).equals(new BigDecimal(1.00000)));System.out.println(new BigDecimal(1).equals(new BigDecimal("1.00000000")));System.out.println(new BigDecimal(1).compareTo(new BigDecimal("1.00000000000000000000")));}

结果可能非你所料:

true
false
0

为什么会这样呢?我们来依个分析:

new BigDecimal(1).equals(new BigDecimal(1.00000))  //true

对于上面的代码

  • new BigDecimal(1) - 从int创建,值为1,精度(scale)=0

  • new BigDecimal(1.00000) - 从double创建,double值1.00000在二进制浮点数中就是1.0

  • 问题所在:从double创建:可能丢失精度信息,结果不可预测

System.out.println(new BigDecimal(1).equals(new BigDecimal("1.00000000"))); //false
  • new BigDecimal(1) - 从int创建,值为1,精度(scale)=0

  • new BigDecimal("1.00000000") - 从字符串创建,值为1,精度(scale)=8

  • 问题所在:equals严格比较精度和数值,如果你需要考虑精度的话,可以考虑

  System.out.println(new BigDecimal(1).compareTo(new BigDecimal("1.00000000000000000000"))); // 0
  • new BigDecimal(1) - 值为1,精度=0
  • new BigDecimal("1.00000000000000000000") - 值为1,精度=20
  • compareTo只比较数值大小,不比较精度

总结

  • 从double创建:可能丢失精度信息,结果不可预测
  • 从字符串创建:完全保留精度信息
  • equals():严格比较值和精度
  • compareTo():只比较数值大小,推荐用于数值比较

所以在实际开发中,对于BigDecimal的数值比较应该使用compareTo() == 0而不是equals()(血淋淋的教训😓)。

http://www.dtcms.com/a/513448.html

相关文章:

  • 分答网站seo短视频保密路线
  • 刷东西网站怎么做商丘网约车都有哪些平台
  • cms网站贵阳网站建设 赶集
  • 位运算符的灵活使用
  • 普通网站 用多说微信文章链接wordpress
  • 织梦网站上传保存文档广州番禺地图全图
  • 网站建设來超速云建站泉州模板建站源码
  • html网站分页怎么做网站优化搜索
  • wordpress字体自适应wordpress js优化
  • 网站开发行业标准不会写程序如何建网站
  • 朴实无华cnn 识别加工线段 删除标注线段
  • 广州网站建设联系新科海珠科技部网站建设合同
  • 宿迁网站优化排名网站集约化后如何建设
  • 物流网站做代理国内外高校门户网站建设的成功经验与特色分析
  • 运放电源配置
  • 呼伦贝尔市建设网站建设工程合同属于
  • 告别“读字”,开始“看图”:AI正在用人类的方式学习“阅读”
  • 网站建设管理的规章制度公司网站备案材料
  • 建设网站有何要求ios企业开发者账号
  • 正邦设计面试珠海网站优化
  • 3.cuda执行模型
  • 小兔自助建站宽屏网页设计尺寸
  • 微网站移交北京建设管理有限公司官网
  • 网站源码检测推广引流最快的方法
  • 网站备案多久一次安徽网站建设推荐 晨飞网络
  • 制作app连接网站有哪些专门制作网页的软件
  • 依托git交付代码,并提供技术支持的方案
  • 新网站seo外包怎么申请免费企业邮箱账号
  • 《算法千题(1)--- 第31场蓝桥算法挑战赛》
  • 网站加载动画效果看车二手车网站源码