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使用方法相关推荐

  1. Java: Number转换为BigDecimal:最好方法

    将Java Number转换为BigDecimal:最好的方法 - IT屋-程序员软件开发技术分享社区

  2. java四舍五入取整_java取整和java四舍五入方法

    import java.math.BigDecimal; import java.text.DecimalFormat; public class TestGetInt{ public static ...

  3. java四舍五入(java四舍五入的方法)

    关于负数的四舍五入-1.84四舍五入为多少-1.86四舍五入为多 四舍五入是指绝对值的四舍五入 精确到0.1的是 1.84≈1.8 -.184≈-1.8 1.86≈1.9 -1.86≈-1.9 ... ...

  4. BigDecimal类 setScale()方法java.lang.ArithmeticException: Rounding necessary

    BigDecimal调用setScale方法时,当未设置舍入模式时,系统会给个默认ROUND_UNNECESSARY(int 值为7)值,如果小数点后不为零,而且要保留的小数位数小于旧小数位数,那么此 ...

  5. Java 中的 BigDecimal,你真的会用吗?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | LanceToBigData 来源 | cnb ...

  6. Java中的BigDecimal,你真的会用吗?

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Forgetting someone doesn't mean never ...

  7. java 四舍五入保留小数点后两位

    方式一: double f = 3.1516; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND ...

  8. Java中使用BigDecimal进行浮点数精确计算 超大整数 浮点数等计算,没有数位限制...

    (注:前面写了一个超大整数相加的类,参见: 超大整数相加,超过了long的范围,你要怎么做!,后来有朋友评论说BigDecimal可以完全实现我的这这个功能,刚开始的时候,我还不服气,据我所知那里有这 ...

  9. decimalformat精度丢失_笔记一:DecimalFormat BigDecimal

    一.DecimalFormat(数字格式化) 例1: import java.text.DecimalFormat; public class Test{ public static void mai ...

最新文章

  1. 一手好牌打的稀烂,如今面临倒计时,网友哭求众筹活下去...
  2. Flink中的状态与容错
  3. for循环运行流程/步骤
  4. 【公开课预告】:超低延迟下的实时合唱体验升级
  5. C#实践设计模式原则SOLID
  6. 微信公众号自动回复加超链接最新可用实现方案
  7. rpm常用命令集合1
  8. nodejs应用在linux服务器中的部署
  9. Java基础练习之流程控制(三)
  10. Jenkins下载插件,报java.net.SocketTimeoutException: Read timed out
  11. [二十一]深度学习Pytorch-正则化Regularization之weight decay
  12. 计算机win10+上锁,win10系统给电脑屏幕上锁的操作方法
  13. SAP中公司间过账问题处理实例
  14. 带T和Z的时间字符串转Long型
  15. 【转】《与MySQL的零距离接触》第二章:数据类型与操作数据表 (2-9:MySQL记录的插入与查找)
  16. Linux 下 lsof 命令的几个高效用法
  17. Live800:大数据将如何改变客户服务?
  18. 第十三章 使用动态SQL(一)
  19. org.apache.poi.ss.usermodel.Cell.getCellType()Lorg/apache/poi/ss/usermodel/CellType(百分比解决你问题)
  20. 毕业论文中的数据分析无从下手?

热门文章

  1. SQLAlchemy 奇怪的查数据库行为
  2. 哈佛大学哲学课《Justice》全12集
  3. 秒杀情况下,用户下单扣除库存创建订单之后,迟迟不付款,时间到了自动取消订单(思路)
  4. Windows共享文件夹,设置无密码访问
  5. 【撩妹技巧】你是如何聊微信,把妹子聊吹了?五雷轰顶
  6. 攻防世界 Misc高手进阶区 2分题 打野
  7. 获取百度贴吧头像的爬虫
  8. 测试过程--编写测试用例
  9. 迁移学习的基本概念、使用场景与方法
  10. 在Android手机上运行OpenDDS发布订阅app