具有十进制值的 BigDecimal?
BigDecimal with decimates value?
我正在尝试使用 BigDecimal 对一个值进行除法,当这个值是 BigDecimal 的四分之一时,我不会这样做。我需要显示抽取值。例如,如果我除 10 / 3 = 3.33333
,我需要显示 3.33
但确实显示 3.00
我该怎么做?
//Result-> 10 / 2 = 3,3333333
BigDecimal result = new BigDecimal(0);
BigDecimal v1 = new BigDecimal(10);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2, BigDecimal.ROUND_UP);
//output = 3
//I need output = 3.33
用int
s初始化的BigDecimal
s的scale是0
,意思是舍入运算取整。以您的示例为例,除法将 up 舍入为 4
.
将第一个BigDecimal
的比例设置为2
,通过除法保留。同时将舍入模式设置为"down".
BigDecimal v1 = new BigDecimal(10).setScale(2);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2, BigDecimal.ROUND_DOWN);
打印 results
现在输出 3.33
。
您也可以使用 RoundingMode
枚举作为舍入常量的替代品。此外,您可以使用 ROUND_HALF_DOWN
、ROUND_HALF_UP
或 ROUND_HALF_EVEN
(或它们的 RoundingMode
等价物)。
您可以使用具有适当小数位数的字符串来隐式设置比例。
BigDecimal v1 = new BigDecimal("10.00"); // scale of 2
尝试 compile
和 run
这个 java class, 它如你所愿:
import java.math.*;
class decimal {
public static void main(String[] args) {
BigDecimal result = new BigDecimal(0);
BigDecimal v1 = new BigDecimal(10);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2,2,BigDecimal.ROUND_HALF_UP);
System.out.println(result);
}
}
输出:3.33
你想要两位小数,这就是我设置 scale=2
的原因
尝试为 BigDecimal 添加小数位数,如下所示:
public class User {
public static void main(String[] args) {
BigDecimal result = new BigDecimal(0);
BigDecimal v1 = new BigDecimal(10).setScale(2);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2, BigDecimal.ROUND_DOWN);
System.out.println(result);
}
}
我正在尝试使用 BigDecimal 对一个值进行除法,当这个值是 BigDecimal 的四分之一时,我不会这样做。我需要显示抽取值。例如,如果我除 10 / 3 = 3.33333
,我需要显示 3.33
但确实显示 3.00
我该怎么做?
//Result-> 10 / 2 = 3,3333333
BigDecimal result = new BigDecimal(0);
BigDecimal v1 = new BigDecimal(10);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2, BigDecimal.ROUND_UP);
//output = 3
//I need output = 3.33
用int
s初始化的BigDecimal
s的scale是0
,意思是舍入运算取整。以您的示例为例,除法将 up 舍入为 4
.
将第一个BigDecimal
的比例设置为2
,通过除法保留。同时将舍入模式设置为"down".
BigDecimal v1 = new BigDecimal(10).setScale(2);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2, BigDecimal.ROUND_DOWN);
打印 results
现在输出 3.33
。
您也可以使用 RoundingMode
枚举作为舍入常量的替代品。此外,您可以使用 ROUND_HALF_DOWN
、ROUND_HALF_UP
或 ROUND_HALF_EVEN
(或它们的 RoundingMode
等价物)。
您可以使用具有适当小数位数的字符串来隐式设置比例。
BigDecimal v1 = new BigDecimal("10.00"); // scale of 2
尝试 compile
和 run
这个 java class, 它如你所愿:
import java.math.*;
class decimal {
public static void main(String[] args) {
BigDecimal result = new BigDecimal(0);
BigDecimal v1 = new BigDecimal(10);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2,2,BigDecimal.ROUND_HALF_UP);
System.out.println(result);
}
}
输出:3.33
你想要两位小数,这就是我设置 scale=2
尝试为 BigDecimal 添加小数位数,如下所示:
public class User {
public static void main(String[] args) {
BigDecimal result = new BigDecimal(0);
BigDecimal v1 = new BigDecimal(10).setScale(2);
BigDecimal v2 = new BigDecimal(3);
result = v1.divide(v2, BigDecimal.ROUND_DOWN);
System.out.println(result);
}
}