2

例如说我有 Double 值1.23456789123456。我希望能够将此数字乘以 10 的各种幂并将输出显示为

  123.456789123456
12345.6789123456
    0.0123456789123456
    0.000123456789123456
etc

有没有办法在 Java 中做到这一点,而不必使用 if...then 语句来处理 10 的不同幂所需的不断变化的小数精度?

4

3 回答 3

1

如果您不需要将数字作为实际浮点值,请尝试将数字表示为String不带小数点的 a(例如"123456789123456")。然后使用该String.substring()方法,你可以在任何你想要的地方打印小数点,包括前导零等。我不知道你可以完全避免使用任何if语句,但逻辑应该相当简单。

例如,这将打印三位有效数字后的小数:

String n = "123456789123456";
System.out.print(n.substring(0, 3));
System.out.print('.');
System.out.print(n.substring(3));
于 2013-02-25T21:04:02.997 回答
1

这可以改进,但它很接近:

public class Test {

    public static void main(final String[] args) {
        System.out.println(format(123.456789123456d));
        System.out.println(format(12345.6789123456d));
        System.out.println(format(0.0123456789123456d));
        System.out.println(format(0.000123456789123456d));
    }

    public static String format(final double d) {
        final int before = 16 - Integer.toString((int) d).length();
        final String format = "%" + (16 + before) + "." + before + "f";
        return String.format(format, d);
    }

输出:

        123.4567891234560
      12345.67891234560
          0.012345678912346
          0.000123456789123
于 2013-02-25T22:22:52.573 回答
0

查看DecimalFormat

于 2013-02-25T21:45:55.033 回答