Java 带小数点的大十进制值?

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(

我试着用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);

    }
}