Java如何避免使用double类型时展示科学计数

简介: Java如何避免使用double类型时展示科学计数

昨天业务找过来说业务上的金额不对,查了日志才知道渠道送过来的数据,由于金额比较大自动转成科学计数了,金额是18882138.23,结果转成1.888213823E7了。问了那边才知道他们使用的是double类型;

一、发生场景

整数位超过7位时,就会自动转成科学计数;下面我们来看下

    @PostMapping(value = "findGoods")
    public Goods getValue(){
        Goods goods=new Goods();
        double premiun=18882138.23;
        goods.setName("超级计算机");
        goods.setPremium(premiun);
        return goods;
    }

使用Postman来调一下,响应结果:

{
    "name": "超级计算机",
    "premium": 1.888213823E7
}

二、解决方案

使用BigDecimal代替

    @PostMapping(value = "findGoods1")
    public Goods getValue1(){
        Goods goods=new Goods();
        BigDecimal premiun=new BigDecimal("18882138.23").setScale(2);
        goods.setName("超级计算机");
        goods.setPremium1(premiun);
        return goods;
    }

setScale()方法设置小数点后保留位数

大家有使用到BigDecimal要转字符串场景时,要注意调用其toPlainString()方法进行转化,不然某些场景下时,也会发生自动转为科学计数的情况;


网上搜了很多文章,大家都是乱抄乱套的,验证了一下根本就不会出现转科学计数的情况,后面看到一篇文章,大家有兴趣可以参考一下进行研究;BigDecimal科学计数场景


目录
相关文章
|
5天前
|
负载均衡 NoSQL 算法
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
这篇文章是关于Java面试中Redis相关问题的笔记,包括Redis事务实现、集群方案、主从复制原理、CAP和BASE理论以及负载均衡算法和类型。
一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
|
11天前
|
存储 Java 程序员
Java中对象几种类型的内存分配(JVM对象储存机制)
Java中对象几种类型的内存分配(JVM对象储存机制)
45 5
Java中对象几种类型的内存分配(JVM对象储存机制)
|
5天前
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。
|
9天前
|
Java 数据库连接 API
Java中的异常处理:一种艺术与科学
【8月更文挑战第11天】在Java的编程世界中,异常处理是一种既需要技术精湛又需具备艺术感的实践。它不仅仅是捕捉和处理错误,更是一种确保程序健壮性和用户体验的策略。本文将探讨Java中异常处理的重要性,以及如何优雅地实现异常管理,提升代码的可读性和维护性,同时确保程序的稳定性和可靠性。
|
11天前
|
Java 数据安全/隐私保护
03 Java流程控制-分支(if+switch+变量类型)
03 Java流程控制-分支(if+switch+变量类型)
17 5
|
23天前
|
Java
java 文件上传 :MultipartFile 类型转换为file类型
java 文件上传 :MultipartFile 类型转换为file类型
37 9
|
24天前
|
Java
Java里的enum类型可以用这swich里吗
Java里的enum类型可以用这swich里吗
23 9
|
21天前
|
Java
Java中将保留四位小数的Double转换为String的方法详解
选择合适的方法,可以使代码更加简洁、高效,同时也能满足不同场景下的需求。
21 5
|
4天前
|
Java API
Java9 Lambda 设计和实现问题之IntStream, LongStream 等类型特定的流接口基于 AbstractPipeline 是如何实现的
Java9 Lambda 设计和实现问题之IntStream, LongStream 等类型特定的流接口基于 AbstractPipeline 是如何实现的
|
26天前
|
Java Maven 编译器
Java编译器注解运行和自动生成代码问题之RoundEnvironment和注解类型集合有什么区别
Java编译器注解运行和自动生成代码问题之RoundEnvironment和注解类型集合有什么区别