-1

设 a 为任意浮点数:

float a = 13.1234567;

然后我从标准输入中得到一个小数位长度:

import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int decLen = sc.nextInt();

如何在点后打印带有“decLen”小数位的“a”?我需要打印

decLen = 3:

13.123

decLen = 6:

13.123456

衰减 = 0:

13

Java 库中是否有任何能够执行此类任务的格式化方法?

4

1 回答 1

-1

有点hack,但这会起作用:

    double[] doubles = {13.123, 13.123456, 13};
    for (int i = 0; i < doubles.length; i++) {
        BigDecimal bigDecimal = new BigDecimal(String.valueOf(doubles[i]));
        System.out.println("decLen = " + bigDecimal.stripTrailingZeros().scale());
    };

印刷:

decLen = 3
decLen = 6
decLen = 0

将 float 或 double 转换为字符串将防止在创建 BigDecimal 时出现舍入错误。

于 2018-02-21T15:50:15.740 回答