我是靠谱客的博主 自觉冬瓜,最近开发中收集的这篇文章主要介绍java 中使用BigDecimal 解决科学计数法问题一 BigDecimal的Api二 解决科学计数问题,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
一 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 中使用BigDecimal 解决科学计数法问题一 BigDecimal的Api二 解决科学计数问题的全部内容,希望文章能够帮你解决java 中使用BigDecimal 解决科学计数法问题一 BigDecimal的Api二 解决科学计数问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复