Java四舍五入、DecimalFormat、BigDecimal、NumberFormat使用方法
1.BigDecimal实现四舍五入
*public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)*返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。如果必须执行舍入,以生成具有指定标度的结果,则应用指定的舍入模式。*参数:* divisor - 此 BigDecimal 要除以的值。* scale - 要返回的 BigDecimal 商的标度。* roundingMode - 要应用的舍入模式。* 返回:* this / divisor* 抛出:* ArithmeticException - 如果 divisor 为零,则 roundingMode==RoundingMode.UNNECESSARY* 和指定的标度不足以准确地表示相除的结果。
2. DecimalFormat 实现四舍五入
DecimalFormat df = new DecimalFormat("#.0000");
* pattern:* 0:表示数字位,但用作小数部分时可以作为一个强制的数字位,如:1.12304(保留三位小数)#.#### 得到1.123 #.0000-> 1.230* #:表示数字位* .:小数分隔符* ,:整数分隔符
3. 详细见代码
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;public class DevideTest {/*** 9. 编写一个方法完成两个数相除:double divide(double a, double divisor);* 结果返回一个double数舍五入保留4位小数。* Math.PI 除以 1.3531 = ?*/public static double divide(double a, double b){return a/b;}public static void main(String[] args) {double result = divide(Math.PI,1.3531);System.out.println("未四舍五入: " + result);DecimalFormat df = new DecimalFormat("#.0000");System.out.println("四舍五入之后,保留四位数结果:" + df.format(new BigDecimal(result)));System.out.println();BigDecimal decimal = new BigDecimal(Math.PI);BigDecimal divisor = new BigDecimal(1.3531);/*** public BigDecimal divide(BigDecimal divisor,* int scale,* RoundingMode roundingMode)* 返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。如果必须执行舍入,以生成具有指定标度的结果,则应用指定的舍入模式。** 参数:* divisor - 此 BigDecimal 要除以的值。* scale - 要返回的 BigDecimal 商的标度。* roundingMode - 要应用的舍入模式。* 返回:* this / divisor* 抛出:* ArithmeticException - 如果 divisor 为零,则 roundingMode==RoundingMode.UNNECESSARY* 和指定的标度不足以准确地表示相除的结果。**/BigDecimal result2 = decimal.divide(divisor,4, RoundingMode.HALF_UP);System.out.println("四舍五入之后,保留四位数结果:" + result2);//NumberFormat 为父类NumberFormat numberFormat = NumberFormat.getInstance();//作用:当在网页中显示数字同样位数可以更好看,更整洁//保留最大整数部分numberFormat.setMaximumIntegerDigits(3);//保留最大小数部分numberFormat.setMaximumFractionDigits(4);//2.1230//保留最小小数部分numberFormat.setMinimumFractionDigits(3);//2.123//默认格式保留3位小数String str = numberFormat.format(Math.PI * 1000);System.out.println("\n Math.PI * 1000 保留3位最大整数部分 保留4位最大小数部分" + str +"结果是不正确的,舍去了3");//DecimalFormat是子类,pattern可以设置数字格式/*** pattern:* 0:表示数字位,但用作小数部分时可以作为一个强制的数字位,如:1.12304(保留三位小数)#.#### 得到1.123 #.0000-> 1.230* #:表示数字位* .:小数分隔符* ,:整数分隔符*/DecimalFormat decimalFormat = new DecimalFormat("#,###.####");String relust3 = decimalFormat.format(1123.23403);String relust4 = decimalFormat.format(1123.23423);System.out.println("\n使用#,###.####,1123.23403 = " + relust3);System.out.println("使用#,###.####,1123.23423 = " + relust4);}
}
Java四舍五入、DecimalFormat、BigDecimal、NumberFormat使用方法相关推荐
- Java: Number转换为BigDecimal:最好方法
将Java Number转换为BigDecimal:最好的方法 - IT屋-程序员软件开发技术分享社区
- java四舍五入取整_java取整和java四舍五入方法
import java.math.BigDecimal; import java.text.DecimalFormat; public class TestGetInt{ public static ...
- java四舍五入(java四舍五入的方法)
关于负数的四舍五入-1.84四舍五入为多少-1.86四舍五入为多 四舍五入是指绝对值的四舍五入 精确到0.1的是 1.84≈1.8 -.184≈-1.8 1.86≈1.9 -1.86≈-1.9 ... ...
- BigDecimal类 setScale()方法java.lang.ArithmeticException: Rounding necessary
BigDecimal调用setScale方法时,当未设置舍入模式时,系统会给个默认ROUND_UNNECESSARY(int 值为7)值,如果小数点后不为零,而且要保留的小数位数小于旧小数位数,那么此 ...
- Java 中的 BigDecimal,你真的会用吗?
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | LanceToBigData 来源 | cnb ...
- Java中的BigDecimal,你真的会用吗?
点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Forgetting someone doesn't mean never ...
- java 四舍五入保留小数点后两位
方式一: double f = 3.1516; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND ...
- Java中使用BigDecimal进行浮点数精确计算 超大整数 浮点数等计算,没有数位限制...
(注:前面写了一个超大整数相加的类,参见: 超大整数相加,超过了long的范围,你要怎么做!,后来有朋友评论说BigDecimal可以完全实现我的这这个功能,刚开始的时候,我还不服气,据我所知那里有这 ...
- decimalformat精度丢失_笔记一:DecimalFormat BigDecimal
一.DecimalFormat(数字格式化) 例1: import java.text.DecimalFormat; public class Test{ public static void mai ...
最新文章
- 一手好牌打的稀烂,如今面临倒计时,网友哭求众筹活下去...
- Flink中的状态与容错
- for循环运行流程/步骤
- 【公开课预告】:超低延迟下的实时合唱体验升级
- C#实践设计模式原则SOLID
- 微信公众号自动回复加超链接最新可用实现方案
- rpm常用命令集合1
- nodejs应用在linux服务器中的部署
- Java基础练习之流程控制(三)
- Jenkins下载插件,报java.net.SocketTimeoutException: Read timed out
- [二十一]深度学习Pytorch-正则化Regularization之weight decay
- 计算机win10+上锁,win10系统给电脑屏幕上锁的操作方法
- SAP中公司间过账问题处理实例
- 带T和Z的时间字符串转Long型
- 【转】《与MySQL的零距离接触》第二章:数据类型与操作数据表 (2-9:MySQL记录的插入与查找)
- Linux 下 lsof 命令的几个高效用法
- Live800:大数据将如何改变客户服务?
- 第十三章 使用动态SQL(一)
- org.apache.poi.ss.usermodel.Cell.getCellType()Lorg/apache/poi/ss/usermodel/CellType(百分比解决你问题)
- 毕业论文中的数据分析无从下手?