根据输入整数添加可变数量的尾随零

时间:2016-10-12 08:07:24

标签: java decimal zero digits decimalformat

有很多关于将逗号后面的小数舍入到2位小数点或添加前导零的问题。但是,我找不到添加可变数量零的尾随零的内容。

我想要实现的目标:
使用正整数 n ,我希望使用 获得小数1 / n n 逗号后的位数。所以前10个将是:

1/1 = 1        ->   1.0
1/2 = 0.5      ->   0.50
1/3 = 1.333... ->   1.333
1/4 = 0.25     ->   0.2500
1/5 = 0.2      ->   0.20000
1/6 = 0.666... ->   0.666666
1/7 = 0.142... ->   0.1428571
1/8 = 0.125    ->   0.12500000
1/9 = 0.111... ->   0.111111111
1/10 = 0.1     ->   0.1000000000

最好我将结果作为字符串并使用尽可能短的代码。所以没有for循环或所有类型的Formatter设置。最好像String.format(..., n);或其他一些简短的解决方案。

我确实尝试String.format("%f0", 1./n);看看它会输出什么,但这只会累加到7位数(不知道如何设置它以及这是否可配置)。因此,对于String.format("%f0", 1./8);,输出0.1250000缺少第8个零。

3 个答案:

答案 0 :(得分:2)

尝试以下方法:

String.format("%." + n + "f", (1.0/n));

答案 1 :(得分:0)

如果你没有使用“单一”格式,有一个简单的解决方法:分两步创建所需的输出。

1/8案例:

  1. value = "0.125";
  2. 您希望总长度为10(0。和8位数!),因此只需创建另一个字符串padding = "00000";
  3. 并返回value + padding

    也可以使用String.format()轻松完成填充;有关各种示例,请参阅here

答案 2 :(得分:0)

使用 NumberFormat class并设置setMaximumFractionDigitssetMinimumFractionDigits

实施例

private static void resolveDecimalPlaces(int i) {
    final NumberFormat nf = NumberFormat.getInstance();
    nf.setMaximumFractionDigits(i);
    nf.setMinimumFractionDigits(i);
    nf.setRoundingMode(RoundingMode.HALF_UP);

    System.out.println(nf.format(1.0 / i));
}