非原创···
public BigDecimal divide(BigDecimal divisor,
int scale,
RoundingMode roundingMode)返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。如果必须执行舍入,以生成具有指定标度的结果,则应用指定的舍入模式。
参数:
divisor - 此 BigDecimal 要除以的值。
scale - 要返回的 BigDecimal 商的标度。
roundingMode - 要应用的舍入模式。
返回:
this / divisor
抛出:
ArithmeticException - 如果 divisor 为零,则 roundingMode==RoundingMode.UNNECESSARY 和指定的标度不足以准确地表示相除的结果。
从以下版本开始:
1.5
两种方法;
1
double num = 5.75557;
System.out.println("floor-->"+Math.floor(num));//取整
BigDecimal b=new BigDecimal(num);
num=b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue(); //保留2位小数
2
这个实现方法被证明是最完美的实现。
public static String round(double v, int scale) {
if (scale < 0) {
throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return String.valueOf(b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue());
}
public class Test123 {
public String round(double v, int scale) {
if (scale < 0) {
throw new IllegalArgumentException(
"The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return String.valueOf(b.divide(one, scale, BigDecimal.ROUND_HALF_UP)
.doubleValue());
}
public static void main(String[] args){
double num = 5.75557;
System.out.println("floor-->"+Math.floor(num));//取整
BigDecimal b=new BigDecimal(num);
num=b.setScale(2,BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println("Sample1-->"+num);
double num2 = 3.1415926;
Test123 test = new Test123();
String str = test.round(num2, 3);
System.out.println("Sample2-->"+str);
}
}
分享到:
相关推荐
本示例代码主要关注如何使用BigDecimal进行四舍五入操作,以保留两位小数,并将金额从单位分转换为单位元。下面将详细解释相关知识点。 1. BigDecimal类: BigDecimal是Java提供的一个大数类,它提供了对任意精度...
在 Java 语言中,四舍五入方法可以通过多种方式实现,包括使用 Math 类的方法、DecimalFormat 类的方法和 BigDecimal 类的方法。 1. 使用 Math 类的方法 Java 的 Math 类提供了多种数学函数,包括 floor、ceil 和 ...
在这个场景中,标题"四舍五入_四舍五入问题_源码"暗示我们将讨论如何在编程中实现四舍五入操作,特别是与计算苹果单价和数量相关的总价问题。描述提到“输入苹果的单价及购买的数量,计算总价,分别显示总价的总价...
System.out.println("四舍五入(3.856)=" + new BigDecimal(i).setScale(0, BigDecimal.ROUND_HALF_UP)); System.out.println("保留两位小数(3.856)=" + new BigDecimal(i).setScale(2, BigDecimal.ROUND_HALF_UP))...
在上面的例子中,我们使用`BigDecimal`类创建了一个表示123.4567的`BigDecimal`对象,然后调用`setScale()`方法设置保留两位小数,并使用`RoundingMode.HALF_EVEN`指定四舍五入的规则。 ##### 2. 使用 `...
在Java中,`BigDecimal`类是用来处理大数值和高精度计算的,同样适用于四舍五入: ```java BigDecimal bd = new BigDecimal("12345.6789"); BigDecimal rounded = bd.setScale(2, RoundingMode.HALF_UP); System....
标题 "sishewuru.rar_四舍五入" 暗示了我们关注的主题是关于数值计算中的四舍五入操作。在这个主题下,我们将深入探讨四舍五入的定义、用途、方法以及在编程中实现四舍五入的常见算法。 四舍五入是一种在数学和...
2. **`BigDecimal`类**: `BigDecimal`是Java中用于处理精确浮点数的类,它提供了丰富的四舍五入方法,如`round(RoundingMode mode)`。`RoundingMode`枚举定义了多种舍入策略,如`UP`(向远离零的方向取整)、`DOWN`...
Java中的四舍五入与保留位示例 Java中的四舍五入是指对数字进行舍入操作,以达到指定的...四舍五入规则可以是银行家舍入法或普通四舍五入规则,保留位可以使用多种方式来实现,包括使用BigDecimal类和setScale()方法。
以下是使用`BigDecimal`进行四舍五入的例子: ```java double f = 3.1516; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue(); ``` 在这个例子中,`setScale`...
这里 `20` 表示保留20位小数,`ROUND_HALF_UP` 是舍入模式,表示四舍五入。 6. 舍入模式(RoundingMode): BigDecimal 支持八种舍入模式,如: - ROUND_UP:向上舍入,远离零,始终增加数字。 - ROUND_DOWN:...
alert(new BigDecimal("10").add(new BigDecimal("3E+10"))); //- alert(new BigDecimal("10").subtract(new BigDecimal("3E+10"))); //* alert(new BigDecimal("10").multiply(new BigDecimal("3E+10"))); // / ...
1.采用两种方式实现数据修约【①IEEE754的银行家算法、②传统的四舍五入】。 2.实现Decimal、double、string三种数据类型的数据修约。 3.实现了指定小数位、指定整数位的数据修约。
否则采用四舍五入的方式。这里使用了 `setScale` 方法来控制结果的精度和舍入方式。 接下来是几个具体的计算例子: - **预算资本支付成本** (`budgetCapitalPayCost`):首先获取所有预算资本支付成本 (`...
7. 四舍五入:在进行除法运算时,可以使用 ROUND_HALF_UP 参数指定四舍五入的方式,以避免精度损失。 在使用 BigDecimal 时需要注意以下几点: * BigDecimal 对象是不可变的,因此在进行运算时需要创建新的对象。 ...
2. **舍入模式**: `BigDecimal.ROUND_HALF_UP` 表示四舍五入模式,这是最常见的舍入方式。`BigDecimal` 还提供了其他多种舍入模式,如 `ROUND_DOWN`、`ROUND_UP` 等,可以根据具体需求选择。 3. **异常处理**: 当 `...
2. 使用`<c:set>`标签结合Java代码:在JSP页面上,可以先将数字转换为`BigDecimal`对象,然后使用`setScale()`方法指定舍入模式,如`RoundingMode.HALF_UP`,这会执行标准的四舍五入操作。 ```jsp ${inputValue}...
可以编写自定义方法来实现四舍五入,这可能涉及到`BigDecimal`或`NumberFormat`类的使用,例如: ```java public static double formatDouble1(double d) { return (double)Math.round(d*100)/100; } public ...
分割除法时需注意,由于可能会出现无限循环小数,`divide()`方法需要指定舍入模式,例如`RoundingMode.HALF_UP`表示四舍五入。 BigDecimal还提供了比较操作,如`compareTo()`方法,用于比较两个BigDecimal值的大小...