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

Add variable amount of trailing zeros based on input integer

有很多关于逗号后将小数点四舍五入到小数点后两位或添加前导零的问题。但是,我无法找到一个添加带有可变数量零的尾随零的方法。

我想达到的目标:
对于正整数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-loops,或所有类型的 Formatter 设置。最好是像 String.format(..., n); 或其他一些简短的解决方案。

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

如果您无法使用 "single" 格式,有一个简单的解决方法:分两步创建所需的输出。

1/8 案例示例:

  1. value = "0.125";
  2. 您想要总长度为 10(0 和 8 位数字!),因此只需创建另一个字符串 padding = "00000";

和returnvalue + padding

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

尝试以下操作:

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

使用 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));
}