java BigDecimal :注意,这是你可能会踩到的坑[通俗易懂]

java BigDecimal :注意,这是你可能会踩到的坑[通俗易懂]在BigDecimal应用的过程中,有两个坑是我们比较容易遇到的,使用不当会出现莫名其妙的错误。1.构造函数的坑先看下面这段代码:publicvoidconstructTest(){BigDecimalvalue1=newBigDecimal(10.511);System.out.println(“value1:”+value1);BigDecimalva

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

在BigDecimal 应用的过程中,有两个坑是我们比较容易遇到的,使用不当会出现莫名其妙的错误。

1.构造函数的坑

先看下面这段代码:

public void constructTest(){ 
   

   BigDecimal value1 =new BigDecimal(10.511);
   System.out.println("value1: " + value1);
   BigDecimal value2 = new BigDecimal("10.511");
   System.out.println("value2: " + value2);

}

按照我们的预想,value1输出的应该是10.511,可是实际的值却不是这样,如下:

value1: 10.510999999999999232613845379091799259185791015625
value2: 10.511

当我们用double类型的数据作为参数时,构造出的BigDecimal 对象value1并不能保证数据的准确性。
而用String作为参数时构造对象时,数据的准确性是有保证的。

在构造BigDecimal对象时尽量使用String作为参数

2.BigDecimal 不可变性的坑

BigDecimal 和String 一样具有对象不可变行,一旦赋值就不会再变。

public void immutableTest() { 
   

   BigDecimal count = new BigDecimal("1.3");
   count.add( new BigDecimal("9.2"));
   System.out.println("count:" + count);

}
count:1.3

执行代码会发现count不是预期的10.5,还是初始的赋值1.3
BigDecimal 在做运算时一定要保存结果

更多内容欢迎关注个人微信公众号,一起成长!
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
上一篇 2022年5月31日 上午7:16
下一篇 2022年5月31日 上午7:36


相关推荐

  • Seajs 笔记

    Seajs 笔记Seajs 介绍 seajs 是国内的一套模块化开发框架 有淘宝工程师王伯写的 有中文文档 学习简单开源代码库 https github com seajs seajsSeajs 出现的比较晚 因此借鉴了 nodejs 的 commonjs 规范 加载时同步的 但是前端使用文件是要异步加载文件的 加载完成之后才能使用 又借鉴了前端的 AMD 规范 seajs 的规范称之为 cmd 规范 这套框架在使用

    2026年3月17日
    3
  • c语言定义不定长数组初始化_C语言数组初始化的三种方式

    c语言定义不定长数组初始化_C语言数组初始化的三种方式1 0 初始化 intarr1 3 0 使用 0 的方式最简洁 一般在定义的时候使用 2 for 循环初始化 intarr2 3 for inti 0 i lt 3 i arr2 i i 使用 for 循环的好处是 可以将每个元素设为不同的值 3 memset 函数 memset 函数声明为 void memset void str int

    2026年3月17日
    2
  • 月之暗面发布并开源Kimi K2模型

    月之暗面发布并开源Kimi K2模型

    2026年3月12日
    2
  • idea 正则表达式替换「建议收藏」

    idea 正则表达式替换「建议收藏」例如,现在有一个函数getView(o,’m’,’orderNum’,’s’),这个函数的调用有很多地方,有一天我们想给这个函数加一个默认参数,让它变成getView(o,’m’,’orderNum’,’s’,’*’),一个一个加太麻烦了,我们就用idea自带的正则表达式替换功能来实现。首先按Ctrl+R,打开替换对话框,然后在上面输入getView\((.+)\),下面输…

    2022年5月17日
    320
  • 更新Git工具到最新版本「建议收藏」

    Ubuntu16.04默认的软件源目前最多只能更新到2.7.4版本,而官方早就已经迭代到2.20.1了,差十几个版本号。新版的git命令工具增加了很多新功能,比如分支HEAD高亮等,相比以前,可以更加方便地脱离图形化界面操作。1、首先查看一下自己的版本是不是低于最新版:git–version2、若不是,添加Git官方的软件源:sudoadd-apt-repositorypp…

    2022年4月9日
    95
  • VGGNet详述

    VGGNet详述本文介绍卷积神经网络中非常经典的 VGGNet 并代码实现

    2026年3月26日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号