我想要的是将double转换为使用half-up方法进行舍入的字符串的方法 – 即,如果要舍入的小数位数为5,则它总是舍入到前一个数字。这是大多数人在大多数情况下期望的四舍五入标准方法。 我也只想显示有效数字 – 即不应该有任何尾随零。 我知道这样做的一种方法是使用该String.format方法: String.format("%.5g%n", 0.912385); 收益: 0.91239 这很棒,但它总是显示5位小数的数字,即使它们不显着: String.format("%.5g%n", 0.912300); 收益: 0.91230 另一种方法是使用DecimalFormatter: DecimalFormat df = new DecimalFormat("#.#####"); df.format(0.912385); 收益: 0.91238 但是,正如你所看到的,这使用半双舍入。如果前面的数字是偶数,那么它会下降。我想要的是这样的: 0.912385 -> 0.91239 0.912300 -> 0.9123 在Java中实现这个最好的方法是什么? 使用时setRoundingMode,RoundingMode明确设置以半双轮处理您的问题,然后使用格式模式输出所需的输出。 例: DecimalFormat df = new DecimalFormat("#.####"); df.setRoundingMode(RoundingMode.CEILING); for (Number n : Arrays.asList(12, 123.12345, 0.23, 0.1, 2341234.212431324)) { Double d = n.doubleValue();