double转BigDecimal精度丢失[通俗易懂]

double转BigDecimal精度丢失[通俗易懂]很多人在double或float转BigDecimal时习惯使用BigDecimal的构造方法newBigDecimal(33.33),此种写法会存在精度丢失问题,下面就具体实例带大家体会:一、使用//使用BigDecimal的构造方法doubled=33.33;BigDecimalbigDecimal=newBigDecimal(d);System.out.println(bigDecimal);…

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

很多人在double或float转BigDecimal时习惯使用BigDecimal的构造方法new BigDecimal(33.33),此种写法会存在精度丢失问题,下面就具体实例带大家体会:

一、使用BigDecimal的构造方法

// 使用BigDecimal的构造方法
double d = 33.33;
BigDecimal bigDecimal = new BigDecimal(d);
System.out.println(bigDecimal);

在这里插入图片描述
结果:33.33精度已经丢失

做减法后:

double d = 33.33;
BigDecimal bigDecimal = new BigDecimal(d);
System.out.println(bigDecimal);
// 做减法(减去33.33)
BigDecimal subtract = bigDecimal.subtract(new BigDecimal(33.33));
System.out.println(subtract);

在这里插入图片描述
结果:33.33-33.33在精度丢失的情况下做减法,结果不等于0

二、使用BigDecimal.valueOf()

// 使用BigDecimal.valueOf()
double d = 33.33;
BigDecimal bigDecimal = BigDecimal.valueOf(d);
System.out.println(d);
BigDecimal subtract = bigDecimal.subtract(BigDecimal.valueOf(33.33));
System.out.println(subtract);

在这里插入图片描述

结果:精度没有丢失,计算正确

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MVC Code First (代码优先)

    MVC Code First (代码优先)

    2022年1月13日
    49
  • NSGA2算法代码理解

    NSGA2算法代码理解NSGA2算法代码理解:设置200个个体,目标函数为2个,决策变量的个数为30,首先初始化得到一个每个个体位于0~1之间的决策变量,利用ZDT1函数求得目标值,保存在数组中。寻找非支配排序,在这200个个体中,选中一个个体,将这个个体和其余个体的目标函数值比较,如果没有一个个体可以支配他,那么就将其加入到非支配集合中ifindividual(i).n==0%个体i非支配等级排序最高,…

    2022年5月18日
    38
  • 圆周率1千亿位_圆周率十亿位

    圆周率1千亿位_圆周率十亿位展开全部3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852…

    2025年11月8日
    2
  • word中行与行间距大

    word中行与行间距大word中设置了行间距,但还是显示距离过大。如下图,删除段前间距和段后间距

    2022年6月13日
    54
  • java inputstream读取文件_java如何获取输入的数据

    java inputstream读取文件_java如何获取输入的数据InputStream读取流有三个方法,分别为read(),read(byte[] b),read(byte[] b,int off,int len)。其中read()方法是一次读取一个字节,鬼都知道效率是非常低的。所以最好是使用后面两个方法。 /** *读取流 * *@paraminStream *@return字节数组 *@throwsExcepti

    2022年9月21日
    2
  • python hashlib_python之hashlib模块

    python hashlib_python之hashlib模块hashlib模块是python内置的摘要算法。hashlib有两种调用方式:第一种是hashlib.new方法new(name,data=b‘‘,**kwargs)-returnsanewhashobjectimplementingthegivenhashfunction;initializingthehashusingthegivenbinarydat…

    2025年6月20日
    3

发表回复

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

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