Java 大十进制中的setscal

Java 大十进制中的setscal,java,bigdecimal,Java,Bigdecimal,我有这个计划: BigDecimal a = new BigDecimal("0.21556788990002"); System.out.println(a.setScale(2)); 我有结果0.21,但当我只想提取0.2时,我会尝试 对于(int i=1;i您需要使用舍入模式进行缩放,对于您的情况,它将如下所示: System.out.println(a.setScale(1, RoundingMode.FLOOR)); 必须使用重载设置刻度方法,该方法将舍入作为第二个

我有这个计划:

BigDecimal a = new BigDecimal("0.21556788990002");
        System.out.println(a.setScale(2));
我有结果
0.21
,但当我只想提取
0.2
时,我会尝试


对于(int i=1;i您需要使用舍入模式进行缩放,对于您的情况,它将如下所示:

System.out.println(a.setScale(1, RoundingMode.FLOOR));

必须使用
重载
设置刻度方法,该方法将舍入作为第二个参数。 参考它

顺便说一句,这与

double a = 0.21556788990002;

for (int i = 1; i < 10; i++)
    System.out.printf("%." + i + "f%n", a);

我认为您也可以使用十进制格式:

        BigDecimal a = new BigDecimal("0.21556788990002");

        //change any desired format using 0 or #
        DecimalFormat dFormat = new DecimalFormat("0.0");
        System.out.println(dFormat.format(a)); //< - print 0.2

        DecimalFormat dFormat = new DecimalFormat("#.0");
        System.out.println(dFormat.format(a)); //< - print .2

        DecimalFormat dFormat = new DecimalFormat("0.00");
        System.out.println(dFormat.format(a)); //< - print 0.21
BigDecimal a=新的BigDecimal(“0.21556788990002”);
//使用0或0更改任何所需格式#
DecimalFormat dFormat=新的DecimalFormat(“0.0”);
System.out.println(dFormat.format(a));//<-print 0.2
DecimalFormat dFormat=新的DecimalFormat(#.0”);
System.out.println(dFormat.format(a));//<-print.2
DecimalFormat dFormat=新的DecimalFormat(“0.00”);
System.out.println(dFormat.format(a));//<-print 0.21
0.2
0.22
0.216
0.2156
0.21557
0.215568
0.2155679
0.21556789
0.215567890
        BigDecimal a = new BigDecimal("0.21556788990002");

        //change any desired format using 0 or #
        DecimalFormat dFormat = new DecimalFormat("0.0");
        System.out.println(dFormat.format(a)); //< - print 0.2

        DecimalFormat dFormat = new DecimalFormat("#.0");
        System.out.println(dFormat.format(a)); //< - print .2

        DecimalFormat dFormat = new DecimalFormat("0.00");
        System.out.println(dFormat.format(a)); //< - print 0.21