首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将Java BigDecimal舍入到最近的间隔

作为一个云计算领域的专家,我可以告诉你,Java BigDecimal 的舍入方法可以通过调用 setScale() 方法来实现。setScale() 方法接受两个参数,第一个参数是要保留的小数位数,第二个参数是舍入模式。以下是一些常用的舍入模式:

  • BigDecimal.ROUND_UP:向正无穷大舍入
  • BigDecimal.ROUND_DOWN:向负无穷大舍入
  • BigDecimal.ROUND_CEILING:向正无穷大舍入,相当于向上取整
  • BigDecimal.ROUND_FLOOR:向负无穷大舍入,相当于向下取整
  • BigDecimal.ROUND_HALF_UP:四舍五入,相当于四舍五入
  • BigDecimal.ROUND_HALF_DOWN:四舍五入,相当于五舍五入
  • BigDecimal.ROUND_HALF_EVEN:四舍五入,相当于银行家舍入法
  • BigDecimal.ROUND_UNNECESSARY:如果需要舍入,则抛出 ArithmeticException 异常

以下是一个示例代码,将一个 BigDecimal 对象舍入到最近的间隔:

代码语言:java
复制
BigDecimal value = new BigDecimal("3.1415926");
int scale = 2;
BigDecimal roundedValue = value.setScale(scale, BigDecimal.ROUND_HALF_UP);
System.out.println(roundedValue); // 输出 3.14

在这个示例中,我们将 value 舍入到两位小数,并使用 BigDecimal.ROUND_HALF_UP 舍入模式。输出结果为 3.14

需要注意的是,setScale() 方法返回一个新的 BigDecimal 对象,而不是修改原始对象。如果需要修改原始对象,可以使用 setScale() 方法的第三个参数,该参数指定舍入的模式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java BigDecimal 舍入模式(RoundingMode)详解

BigDecimal.divide方法中必须设置roundingMode,不然会报错。...ROUND_UP:向正无穷方向对齐(转换为正无穷方向最接近所需数值) ROUND_DOWN:向负无穷方向对齐 ROUND_CEILING:向原点反方向对齐 ROUND_FLOOR:向原点方向对齐 ROUND_HALF_UP...:“四舍五入”,如果舍弃部分最高位大于等于 5,向正无穷方向对齐,否则向负无穷方向对齐 ROUND_HALF_DOWN:“五舍六入”,如果舍弃部分最高位大于 5,向正无穷方向对齐,否则向负无穷方向对齐...ROUND_HALF_EVEN:“四舍六入五成双”,如果舍弃部分最高位大于等于六,或等于五并且前一位是奇数,向正无穷方向对齐,否则向负无穷方向对齐 ROUND_UNNECESSARY:如果需要舍入

1.8K21

BigDecimal使用总结

对于超过16位大型数字,需要用到Javajava.math包中提供API类BigDecimal,而且也不是传统+-*/,而是调用对应方法。...这是因为0.1无法准确地表示为 double(或者说对于该情况,不能表示为任何有限长度二进制小数)。这样,传入构造方法值不会正好等于 0.1(虽然表面上等于该值)。...divide(BigDecimal) //BigDecimal对象数值转换成字符串。...//向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5 ROUND_HALF_EVEN //向(距离)最近一边舍入,除非两边...(距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN ROUND_HALF_UP //向(距离)最近一边舍入,除非两边

83630
  • java 中对 BigDecimal 类使用详解

    Javajava.math包中提供API类BigDecimal,用来对超过16位有效位数进行精确运算。双精度浮点型变量double可以处理16位有效数。...doubleValue() BigDecimal对象中值以双精度数返回。 floatValue() BigDecimal对象中值以单精度数返回。...longValue() BigDecimal对象中值以长整数返回。 intValue() BigDecimal对象中值以整数返回。...这是因为0.1无法准确地表示为 double(或者说对于该情况,不能表示为任何有限长度二进制小数)。这样,传入构造方法值不会正好等于 0.1(虽然表面上等于该值)。...ROUND_DOWN //向零方向舍入 ROUND_FLOOR //向负无穷方向舍入 ROUND_HALF_DOWN //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样

    1.1K30

    BigDecimal

    这是因为0.1无法准确地表示为 double(或者说对于该情况,不能表示为任何有限长度二进制小数)。这样,传入构造方法值不会正好等于 0.1(虽然表面上等于该值)。...另一方面,String 构造方法是完全可预知:写入 newBigDecimal(“0.1”) 创建一个 BigDecimal,它正好等于预期 0.1。...向零方向舍入 ROUND_FLOOR //向负无穷方向舍入 ROUND_HALF_DOWN //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为...1.5 ROUND_HALF_EVEN //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN...ROUND_HALF_UP //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6 ROUND_UNNECESSARY //计算结果是精确

    98110

    【蓝桥杯Java_C组·从零开始卷】第五节(二)、BigDecimal使用

    java.math.BigDecimal; public class demo { public static void main(String[] args) { BigDecimal x...ROUND_DOWN //向零方向舍入 ROUND_FLOOR //向负无穷方向舍入 ROUND_HALF_DOWN  //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向下舍入..., 例如1.55 保留一位小数结果为1.5 ROUND_HALF_EVEN  //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数...,使用ROUND_HALF_DOWN ROUND_HALF_UP  //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6 ROUND_UNNECESSARY...此舍入模式类似于 Java 中对float 和double 算法使用舍入策略。

    1.1K20

    javaBigDecimal 详解「建议收藏」

    BigDecimal是什么?】 1、简介 Javajava.math包中提供API类BigDecimal,用来对超过16位有效位数进行精确运算。...longValue() BigDecimal对象中值以长整数返回。 intValue() BigDecimal对象中值以整数返回。...//向正无穷方向舍入 ROUND_DOWN //向零方向舍入 ROUND_FLOOR //向负无穷方向舍入 ROUND_HALF_DOWN //向(距离)最近一边舍入,除非两边...(距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5 ROUND_HALF_EVEN //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,如果保留位数是奇数...,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN ROUND_HALF_UP //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向上舍入, 1.55

    74020

    Double转BigDecimal并保留两位小数出现异常: java.lang.ArithmeticException: Rounding necessary

    } 输出结果: java.lang.ArithmeticException: Rounding necessary java.lang.ArithmeticException: Rounding necessary...异常分析: 使用 Double 转 BigDecimal 并保留两位小数出现异常: java.lang.ArithmeticException: Rounding necessary 原因是:精度丢失...请注意,此舍入模式不会增加计算值 public final static int ROUND_HALF_DOWN:舍入模式向“最近邻居”舍入,除非两个邻居等距,在这种情况下向下舍入。...public final static int ROUND_HALF_EVEN:舍入模式向“最近邻居”舍入,除非两个邻居等距,在这种情况下,向偶数邻居舍入。...public final static int ROUND_HALF_UP:舍入模式向“最近邻居”舍入,除非两个邻居等距,在这种情况下向上舍入

    75220

    JavaBigDecimal用法详解

    其实javafloat只能用来进行科学计算或工程计算,在大多数商业计算中,一般采用java.math.BigDecimal类来进行精确计算。...这样,传入构造方法值不会正好等于 0.1(虽然表面上等于该值) 2、另一方面,String 构造方法是完全可预知:写入 newBigDecimal("0.1") 创建一个 BigDecimal,...//向零方向舍入 ROUND_FLOOR //向负无穷方向舍入 ROUND_HALF_DOWN //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向下舍入, 例如1.55...保留一位小数结果为1.5 ROUND_HALF_EVEN //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用...ROUND_HALF_DOWN ROUND_HALF_UP //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6 ROUND_UNNECESSARY

    87630

    java保留两位小数

    BigDecimal介绍 BigDecimalJava提供一个不变、任意精度有符号十进制数对象。...b1.multiply(b2).toString();   }   /**   * 提供(相对)精确除法运算,当发生除不尽情况时,精确   * 小数点以后10位,以后数字四舍五入,舍入模式采用...向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5 static int ROUND_HALF_EVEN           Rounding...向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP ,如果是偶数,使用ROUND_HALF_DOWN static int ROUND_HALF_UP...向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6 static int ROUND_UNNECESSARY           Rounding

    6.3K20

    JavaBigDecimal详解

    val)  int表示形式转换成BigDecimal   3.public BigDecimal(String val)  String表示形式转换成BigDecimal 测试: System.out.println...这是因为0.1无法准确地表示为 double(或者说对于该情况,不能表示为任何有限长度二进制小数)。这样,传入构造方法值不会正好等于 0.1(虽然表面上等于该值)。        ...//向零方向舍入 ROUND_FLOOR    //向负无穷方向舍入 ROUND_HALF_DOWN    //向(距离)最近一边舍入,除非两边(距离)是相等,  如果是这样,向下舍入, 例如1.55...保留一位小数结果为1.5                   ROUND_HALF_EVEN    //向(距离)最近一边舍入,除非两边(距离)是相等, 如果是这样,如果保留位数是奇数,使用                   ...ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWNROUND_HALF_UP    //向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为

    55820

    BigDecimal

    ,而Java提供了两种处理浮点数值数据类型:double和float。...Java内置了double和float两种浮点数类型,它们在对于小数计算上都有很好支持。...这个问题可能会导致在金额计算等场景中出现错误,严重的话可能会影响业务逻辑正确性。 另外,float和double数值类型中某些特殊值(如无法计算结果、除以0等)可能会导致抛出运行时异常。...- 向最接近数字舍入,如果与两个相邻数字距离相等,则向最近偶数舍入 RoundingMode.HALF_DOWN - 向最接近数字舍入,如果与两个相邻数字距离相等,则向远离零方向舍入 RoundingMode.HALF_EVEN...- 向最接近数字舍入,如果与两个相邻数字距离相等,则向最近偶数舍入,类似于四舍五入 例如,当我们使用BigDecimal进行除法计算时,应指定一个舍入模式,例如: BigDecimal a =

    30920

    bigdecimal保留小数位数_如何保留两位小数

    package com.algorithms; import java.math.BigDecimal; import java.util.Scanner; /** * 调和级数求和 * @author...bigDecimal = new BigDecimal(sum); System.out.println("调和级数和为 : " + sum); //保留两位小数,四舍五入 四舍五入模式正无穷...: " + bigDecimal.setScale(2, BigDecimal.ROUND_FLOOR)); //ROUND_HALF_DOWN 保留两位小数,四舍五入 向(距离)最近一边舍入...)); //ROUND_HALF_EVEN 保留两位小数,向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP ,如果是偶数,使用ROUND_HALF_DOWN...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站立刻删除。

    6K30

    Java四舍五入保留两位小数

    Java四舍五入保留两位小数 一、前言 环境 开发工具:IntelliJ IDEA JDK:1.8 二、正文 BigDecimal RoundingMode 算法 说明 ROUND_UP 舍入模式从零舍入...ROUND_DOWN 舍入模式向零舍入 ROUND_CEILING 舍入模式向正无穷大舍入 ROUND_FLOOR 舍入模式向负无穷大舍入 HALF_UP 舍入模式向“最近邻居”舍入,除非两个邻居是等距...,在这种情况下向上舍入 HALF_DOWN 舍入模式向“最近邻居”舍入,除非两个邻居是等距,在这种情况下向下舍入 HAIL_EVEN 舍入模式向“最近邻居”舍入,除非两个邻居是等距,在这种情况下...,向偶数邻居舍入 UNNECESSARY 舍入模式断言所请求操作具有精确结果,因此不需要舍入 代码 double num = 3333.445555; // BigDecimal BigDecimal...bigDecimal = new BigDecimal(num); bigDecimal = bigDecimal.setScale(2, RoundingMode.HALF_UP); System.out.println

    1.1K20

    Java基础知识点笔记(一):java取整与四舍五入

    2.java中提供取整函数 java中提供了三种取整函数: (1).Math.ceil(double num); (2).Math.floor(double num);...若是正数,舍入行为类似于ROUND_DOWN;若为负数,舍入行为类似于ROUND_UP。 (5).ROUND_HALF_UP:最近数字舍入(5进)。这是我们最经典四舍五入。...(6).ROUND_HALF_DOWN:最近数字舍入(5舍)。在这里5是要舍弃。 (7).ROUND_HALF_EVEN:银行家舍入法。...方式处理后:" + f7); } 如果BigDecimal b7 = new BigDecimal(“10.23455”)中数字改为10.2345或10.234500000;即可正常运行...注:这些枚举值有时候会用RoundingMode类中枚举值,其实效果是一样,RoundingMode只是BigDecimal枚举又封装了一层,简化了一下枚举名,无实质性差别。

    2.9K50

    java 四舍五入保留小数几种方式

    向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5 ROUND_HALF_EVEN Rounding mode to round towards...向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP ,如果是偶数,使用ROUND_HALF_DOWN ROUND_HALF_UP...向(距离)最近一边舍入,除非两边(距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6 ROUND_UNNECESSARY Rounding mode to assert...结果舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为long 类型。...结果舍入为整数:加上 1/2,对结果调用 floor 并将所得结果强制转换为int 类型。

    2.3K30

    Java计算百分比方法

    基础百分比计算 在Java中,计算百分比是一个常见任务,它涉及基本算术运算。本节介绍如何在Java中执行基础百分比计算。...这不仅影响计算准确性,也可能影响最终业务决策。 讨论不同数据类型在百分比计算中使用场景 Java提供了多种数值数据类型,包括int、long、float、double和BigDecimal。...JavaBigDecimal类提供了多种舍入模式,如ROUND_HALF_UP、ROUND_HALF_DOWN、ROUND_HALF_EVEN等。...展示如何处理舍入以确保计算准确性 在进行百分比计算时,通常需要将结果舍入特定小数位数。...本节通过几个实际案例来展示如何在Java中进行百分比计算。 展示如何在实际应用中计算折扣百分比 在电子商务应用中,计算折扣是一个常见需求。

    23410

    JDK1.8快速入门

    愿编写java代码过程如:Fast & Furious 鸟枪换炮咯,走起!J Java 7发布于2011年,Java 8发布于2014年,Java 9还远么?...如果 BigDecimal 为正,则舍入行为与 ROUND_UP 相同;如果为负,则舍入行为与 ROUND_DOWN 相同。Math.round()方法就是使用此模式。...5、 HALF_UP:四舍五入,最近数字舍入(5进)。 6、 HALF_DOWN:四舍六入,最近数字舍入(5舍)。 7、 HAIL_EVEN:银行家舍入法。四舍六入五偶舍。...向“最接近”数字舍入,如果与两个相邻数字距离相等,则向相邻偶数舍入。...注意,在重复进行一系列计算时,此舍入模式可以累加错误减到最小。 8、ROUND_UNNECESSARY 断言请求操作具有精确结果,因此不需要舍入

    1.1K90

    Java开发中商业计算请务必使用BigDecimal来进行计算!

    《Effective Java》在第48条也推荐“使用BigDecimal来做精确运算”。今天我们就来总结归纳其相关知识点。 2....我们使用BigDecimal进行高精度算术运算。我们还将它用于需要控制比例和舍入行为计算。如果你计算是商业计算请务必使用计算精确`BigDecimal` 。 3....它还提供了缩放操作,舍入和格式转换操作。它不会使算术运算符(+ - /*)或逻辑运算符(> < | &) 过载。相反,我们使用`BigDecimal`相应方法 - 加,减,乘,除和比较。...java提供有两个类控制舍入行为`RoundingMode`和`MathContext` 。...格式化 数字格式化可通过操作类`java.text.NumberFormat`和`java.text.DecimalFormat`提供api进行操作。

    1.4K20

    【Android 应用开发】Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片

    half-even舍入法, 这个不是四舍五入方法, 当出现5时候,就会向最近偶数靠近....例如 : System.out.println(new java.text.DecimalFormat("0.00").format(3.135)); 5最近偶数是4, 打印结果就是3.14; System.out.println...(new java.text.DecimalFormat("0.00").format(3.125)); 5最近偶数是2, 打印结果就是3.12; float pi = 3.1415926f;...这个方法传入参数 : 需要保留小数位数 , BigDecimal.ROUND_HALF_UP常量 , 之后调用这个常量对应BigDecimal转为浮点数方法 , 得到结果为转化好浮点数...ROUND_DOWN : 向零方向舍入 ROUND_FLOOR : 向负无穷方向射舍入 ROUND_HALF_DOWN : 向距离近一方舍入 , 如果两边相等 , 向下舍入 , 例如 2.155

    60810
    领券