Java中具有特定精度的双精度值


问题内容

我正在编写一个简单的Java程序。我需要从输入中获取一个字符串并将其分为两部分:1-double
2-string。然后,我需要对double进行简单的计算,并将结果发送到具有特定精度的输出(4)。它工作正常,但是当输入为0时出现问题,则不能正常工作。

例如,对于这些输入,输出将是:

1公斤
输出:2.2046

3.1公斤
输出:6.8343

但是当输入为0时,输出应为0.0000,但显示为0.0。我应该怎么做才能使其显示为0.0000?

我读过有关双精度的类似文章,它们建议BigDecimal使用类之类的东西,但是在这种情况下我不能使用它们,我这样做的代码是:

line=input.nextLine();
array=line.split(" ");
value=Double.parseDouble(array[0]);
type=array[1];
value =value*2.2046;
String s = String.format("%.4f", value);
value = Double.parseDouble(s);
System.out.print(value+" kg\n");

问题答案:

DecimalFormat将允许您定义要显示的位数。即使值是零,“ 0”将强制输出数字,而“#”将省略零。

System.out.print(new DecimalFormat("#0.0000").format(value)+" kg\n"); 应该把戏。

请参阅说明文件

注意:如果出于性能原因经常使用,则应仅实例化格式化程序一次并存储引用:final DecimalFormat df = new DecimalFormat("#0.0000");。然后使用df.format(value)