double转BigDecimal精度丢失的解决方案。

double转BigDecimal精度丢失的解决方案。因为double有精度丢失的问题,所以关于小数点的计算通常使用BigDecimal来计算。但直接调用BigDecimal的构造函数,会出现精度丢失问题。publicBigDecimal(doubleval){this(val,MathContext.UNLIMITED);}例子:publicclassDemo1{publicstaticvoidmain(String[]args){//输出结果:4.7999999999999998223

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

因为double有精度丢失的问题,所以关于小数点的计算通常使用BigDecimal来计算。
但直接调用BigDecimaldouble构造函数,会出现精度丢失问题。

/** * BigDecimal传double的构造函数 */
public BigDecimal(double val) { 
   
        this(val,MathContext.UNLIMITED);
}

例子:

public class Demo1 { 
   
    public static void main(String[] args) { 
   
    //输出结果:4.79999999999999982236431605997495353221893310546875
        System.out.println(new BigDecimal(4.8));
    }
}

解决方案:
double类型转为String类型就可以了。
调用的是BigDecimalString构造函数。

public class Demo1 { 
   
    public static void main(String[] args) { 
   
        double d = 4.8;
        //输出结果:4.79999999999999982236431605997495353221893310546875
        System.out.println(new BigDecimal(d));
        //输出结果:4.8
        System.out.println(new BigDecimal(String.valueOf(d)));
    }
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • java解析json转Map

    java解析json转Map前段时间在做json报文处理的时候,写了一个针对不同格式json转map的处理工具方法,总结记录如下:1、单节点单层级、单节点多层级json转mapimportjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.List;importjava.util.Map;i

    2022年6月15日
    71
  • Mysql数据库insert into select 单表插入常量

    Mysql数据库insert into select 单表插入常量单表插入常量INSERTINTOtb1(col1,colx)SELECTcol1,valxFROMtb1其实本质还是INSERT INTO SELECT 的用法,只是把其他表化成了单表,把SELECT后的colx换成你想要添加的自定义常量valx就行了。

    2022年7月16日
    29
  • kafka 认证和鉴权方式_kafka实际应用

    kafka 认证和鉴权方式_kafka实际应用前言kafka官网关于sasl_scram鉴权Kafka消费端配置创建SCRAMCredentials依赖zk,需要先启动zk,然后在zk中创建存储SCRAM凭证:cdkafkacluster/kafka_2.11-1.1.1bin/kafka-configs.sh–zookeeperzkIP1:2181,zkIP2:2181,zkIP3:2181/lxgkafka–alter–add-config’SCRAM-SHA-256=[password=admin-secr

    2025年7月4日
    3
  • java 封装

    java 封装1.封装简介概念将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的访问和操作。好处a.只能通过规定的方法访问数据。b.隐藏类的实例细节,方便修改和实现。为啥要对java的类进行封装?个人认为当做一个项目的时候里面的类很多,打个比方一个大公司部门很多,老板不是每个员工都认识,但是“各部门

    2022年7月8日
    22
  • 查看sql_mode_mysql命令行执行sql脚本

    查看sql_mode_mysql命令行执行sql脚本1,执行SQL查看select@@session.sql_mode;全局级别:查看select@@global.sql_mode;2,修改set@@session.sql_mode=’xx_mode’setsessionsql_mode=’xx_mode’全局级别:修改setglobalsql_mode=’xx_mode’;set@@global.sql_mode=’xx_mode’;session均可省略,默认session,仅对当前会话有效全局修改的话,

    2022年9月1日
    7
  • jvm定义的类加载器_类加载器有哪些

    jvm定义的类加载器_类加载器有哪些0.为什么需要自定义类加载器网上的大部分自定义类加载器文章,几乎都是贴一段实现代码,然后分析一两句自定义ClassLoader的原理。但是我觉得首先得把为什么需要自定义加载器这个问题搞清楚,因为如果不明白它的作用的情况下,还要去学习它显然是很让人困惑的。首先介绍自定义类的应用场景:(1)加密:Java代码可以轻易的被反编译,如果你需要把自己的代码进行加密以防止反编译,可以先…

    2025年9月23日
    8

发表回复

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

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