java 中使用BigDecimal 解决科学计数法问题
JAVA 解决 科学 bigdecimal 问题 计数法 使用
2023-09-27 14:22:12 时间
一 BigDecimal的Api
1.1 常用方法介绍
ROUND_CEILING 向正无穷方向舍入
ROUND_DOWN 向零方向舍入
ROUND_FLOOR 向负无穷方向舍入
ROUND_HALF_DOWN 向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5
ROUND_HALF_UP 向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6
ROUND_HALF_EVEN 向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP ,如果是偶数,使用ROUND_HALF_DOWN
ROUND_UNNECESSARY 计算结果是精确的,不需要舍入模式
ROUND_UP 向远离0的方向舍入
案例
BigDecimal decimal = new BigDecimal("3.16974432");//1.98764432
System.out.println(decimal);
BigDecimal setScale = decimal.setScale(4,BigDecimal.ROUND_HALF_DOWN);
System.out.println(setScale);
BigDecimal setScale1 = decimal.setScale(4,BigDecimal.ROUND_HALF_UP);
System.out.println(setScale1);
BigDecimal 损失精度、科学计数、去除数字末位0、DecimalFormat等问题(详解)_小情歌i的博客-CSDN博客_bigdecimal科学计数法
二 解决科学计数问题
2.1 案例一
1.代码
BigDecimal decimal = new BigDecimal("3.16974497273E9");
System.out.println(decimal);
BigDecimal setScale = decimal.setScale(4,BigDecimal.ROUND_HALF_DOWN);
System.out.println(setScale);
BigDecimal setScale1 = decimal.setScale(4,BigDecimal.ROUND_HALF_UP);
System.out.println(setScale1);
2.结果:
2.2 decimal的乘法和减法
1.数据库字段设置decimal
2.实体
3.运算
1.四舍五入
public BigDecimal getScienceDecimalVale(BigDecimal resultValue){
BigDecimal setScale = resultValue.setScale(2,BigDecimal.ROUND_HALF_UP);
logger.info("解决科学计算法: 原来值:"+resultValue+" 保留2位小数:"+setScale);
// String finishResult= resultValue.setScale(2, BigDecimal.ROUND_HALF_UP).toString();
//System.out.println("解决科学计算法:"+finishResult);
return setScale;
}
2.相减
3.相乘
相关文章
- java 生成12位随机数,解决The literal 9999999999999 of type int is out of range 问题
- 解决TestNG报java.net.SocketException
- 【JAVA】Eclipse如何改变工作空间的目录。(图文,已解决!)
- Android Integer.parseInt java.lang.NumberFormatException: Invalid int解决方法
- Java POST请求MutliPartFile上传时最大文件限制报错及解决
- 解决Exception in thread main java.lang.Error Unresolved compilation problems 的一种办法
- 第二十五节:Java语言基础-面向对象基础
- 【Java实习生】每日10道面试题打卡!
- Java的WAR包文件分析
- Java反射学习总结终(使用反射和注解模拟JUnit单元测试框架)
- java高并发,如何解决,什么方式解决
- Java面试通关要点汇总集之核心篇参考答案
- Java学习-088-解决 IDEA 使用 DB Navigator 连接 MYSQL 时区问题
- Java学习-085-Springboot 解决 InetAddress.getLocalHost().getHostName() took 13387 milliseconds to respond. Please verify your network configuration
- c++ 与 java 中的 继承
- Java中使用com.sun相关jar包出现编译错误,但是运行没有错误的解决方法和原因
- 浅析security遇到java.lang.IllegalArgumentException:Cannot pass null or empty values to constructor问题处理
- Java设计模式之行为型:状态模式
- 3、调用hadoop API实现HDFS常用Java实例和I/O流操作实例
- Java魔法堂:内部类详解
- Java高手速成 | 新增类Record的工作实例
- 开源 自由 java CMS - FreeCMS1.9 积分规则管理
- 关于在Android或Java中精度缺失的解决方法
- Jetty+json-lib库抛异常的问题解决过程(java.lang.NoClassDefFoundError: net/sf/json/JSONObject)
- Java 日志缓存机制的实现--转载
- Java 使用 Stream API 筛选 List
- 多种方式解决Java控制台报错 java.util.LinkedHashMap cannot be cast to.....