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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php面试常问方法汇总

    php面试常问方法汇总

    2022年2月15日
    36
  • 练习break和continue「建议收藏」

    练习break和continue「建议收藏」练习break和continue需求:计算出1到100所有不能被7整除的整数之和(用continue)代码如下:<script>varsum=0;for(vari=0;i<=100;i++){ if(i%7===0){ continue; } sum+=i;}console.log(sum);</script>需求:…

    2022年5月1日
    53
  • linux下java的环境配置

    linux下java的环境配置linux下java的环境配置文章目录linux下java的环境配置1.删除原有的java环境2.去官网下载相应的Java环境3.在Linux上进行解压4.修改~/.bashrc参考链接之前在大数据配置hadoop开发环境的时候,进行了相关的配置,所以还有印象,接下来对虚拟机ubuntu进行java的环境配置1.删除原有的java环境2.去官网下载相应的Java环境我用的是java8的环境,比较经典,另外还有java11也是比较稳定的,相较于java8做了一些改进3.在Linux上进行解

    2022年5月16日
    43
  • HTTP协议

    HTTP协议

    2021年12月1日
    56
  • R语言作图:坐标轴设置

      要绘制一张赏心悦目的统计图表,坐标轴的设置至关重要。在R语言底层作图中,对坐标轴的调整主要通过调整plot函数、axis函数和title函数的一系列参数完成。plot(x,y,…)axis(side,at=NULL,labels=TRUE,tick=TRUE,line=NA,pos=NA,outer=FALSE,font=NA,…

    2022年4月8日
    87
  • oracle中的rownum详解

    oracle中的rownum详解1.概述rownum是Oracle引入的虚列。在物理上这个虚列并不存在,只是在查询时才构造出来。伪列通常是自由分配的,用户无法执行修改等操作。2.特点关于rownum有以下主要特点:1)row

    2022年7月2日
    20

发表回复

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

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