当前位置: 首页 > news >正文

Java返回前端Bigdecimal类型数据时“0E-8“及小数点多余0的问题

目录

问题描述:

解决方法:

重要代码:


问题描述:

    项目中oracle数据库需要转换为mysql,Oracle中的表字段定义为number(36,16)类型的工具自动转换为mysql的decimal(36,16)。在Oracle数据库中,number(36,16)类型的字段,使用BigDecimal类型进行映射字段,能够正常获取到去除后缀0的值。MySQL数据库中存储为decimal(36,16)对应的字段,使用BigDecimal进行映射,会得到加后缀0的数值。例如在oracle中实际精度是16位的数值0.000345344,使用BigDecimal接收,会得到0.000345344,而mysql会得到的值为0.0003453440000000,这样返回给前端,就会有问题。这

解决方法:

1、按照业务需求,在mysql数据库下,修改每一个字段对应的精度。然后在代码中手动对BigDecimal类型的字段进行手动去0后缀处理。

2、在vo层进行json格式化中,进行去除0后缀。(这种方案不推荐,但要是想快速修改,可以采取)

重要代码:
package com.xiayu.config;import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.databind.JsonSerializer;import com.fasterxml.jackson.databind.SerializerProvider;import java.io.IOException;import java.math.BigDecimal;import java.util.Objects;public class CustomerBigDecimalSerialize extends JsonSerializer<BigDecimal> {@Overridepublic void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) throws IOException {if(Objects.nonNull(value)) {gen.writeNumber(value.stripTrailingZeros().doubleValue());//去除0后缀,如果想统一进行保留精度,也可以采用类似处理}else {//如果为null的话,就写nullgen.writeNull();}}}//在vo类字段中对字段加上@JsonSerialize注解@JsonSerialize(using = CustomerBigDecimalSerialize.class)private BigDecimal totalExchangeBtc; //抵扣电费的usdt兑换的btc总量@JsonSerialize(using = CustomerBigDecimalSerialize.class)private BigDecimal perTotalExchangeBtc; //兑换的btc总量对应每份的btc@JsonSerialize(using = CustomerBigDecimalSerialize.class)private BigDecimal exchangeUsdtPrice; //兑换时usdt的价格
http://www.lryc.cn/news/366278.html

相关文章:

  • 标题:深入探索Linux中的`ausyscall`
  • CorelDRAW2024发布更新啦!设计师们的得力助手
  • SpringMVC日期格式处理 分页条件查询
  • 蓝桥云课第12届强者挑战赛
  • LabVIEW储油罐监控系统
  • 局域网、城域网、广域网的ip
  • 【全开源】Java共享茶室棋牌室无人系统支持微信小程序+微信公众号
  • echarts数据更新没反应解决方案
  • RK3588+FPGA+算能BM1684X:高性能AI边缘计算盒子,应用于视频分析、图像视觉等
  • Mysql学习(三)——SQL通用语法之DML
  • java static 如何理解
  • 算法金 | 不愧是腾讯,问基础巨细节 。。。
  • 实验9 浮动静态路由配置
  • 多源最短路径算法–Floyd算法
  • 使用Redis缓存实现短信登录逻辑,手机验证码缓存,用户信息缓存
  • 探索未来制造,BFT Robotics引领潮流
  • 数组中的第K个最大元素 ---- 分治-快排
  • 函数或变量 ‘tfrstft‘ 无法识别
  • 在推荐四款软件卸载工具,让流氓软件无处遁形
  • 「前端+鸿蒙」核心技术HTML5+CSS3(十一)
  • 【高频】如何优化一个SQL语句
  • Oracle EBS AP发票创建会计科目提示:APP-SQLAP-10710:无法联机创建会计分录
  • T-Pot多功能蜜罐实践@debian12@FreeBSD
  • Sed流编辑器总结
  • 智合同丨AIGC如何助力合同智能应用
  • CSRF 令牌的生成过程和检查过程
  • 计算机网络学习记录 网络层 Day4(下)
  • 3、前端本地环境搭建
  • Python爬取城市空气质量数据
  • 【MyBatisPlus条件构造器】