Java 带小数点的大十进制值?
我试着用BigDecimal除法一个值,当这个值是一个小数点时,将这个值四舍五入,我不会这样做。我需要显示小数点的值。例如,如果我确实除以Java 带小数点的大十进制值?,java,bigdecimal,Java,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(
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初始化的bigdecimic
s的刻度为0
,这意味着舍入操作取整为单位。以您的示例为例,该除法四舍五入为4
将第一个BigDecimal
的刻度设置为2
,通过除法保留。同时将舍入模式设置为“向下”
打印结果
现在输出3.33
您还可以使用RoundingMode
enum作为舍入常量的替换项。此外,您还可以使用向下取整
,向上取整
,或甚至取整
(或其取整模式
)
可以使用具有适当小数位数的字符串隐式设置比例
BigDecimal v1 = new BigDecimal("10.00"); // scale of 2
尝试编译
和运行
这个java类,它可以按照您的意愿工作:
输出:3.33
您需要两个十进制数字这就是为什么我设置scale=2尝试将scale添加到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.ROUND_添加到divide调用中???运行此调用时(撰写本文时)得到的输出是
4
.v1.divide(v2*100,Big…)/100?可能是
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);
}
}
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);
}
}