Java:以迭代方式向上舍入双值

标签 java double rounding

让我们考虑下面的代码片段

public static void main(String[] args) {
        DecimalFormat twoDForm = new DecimalFormat("#.00");            
        double k=4.144456;
        System.out.println(twoDForm.format(k));
    }

我期望输出为4.15,就好像我们考虑迭代舍入一样,答案应该是4.15,但我猜DecimalFormat仅检查立即数舍入时的下一个数字值。

有什么方法可以实现迭代舍入输出。

最佳答案

该问题需要独特的舍入模式。这个答案解决了获得特殊舍入的一般问题。

BigDecimal(double) 构造函数和 BigDecimal 的 toString() 方法都是精确的。

BigDecimal bd = new BigDecimal(d);
String s = bd.toString();

s 保留为 double d 的精确、不四舍五入的 String 表示形式。然后,您可以执行任何所需的字符串操作来获取所需的值。此外,您可以在舍入 bd 中使用任何 BigDecimal 舍入模式。

关于Java:以迭代方式向上舍入双值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44968067/

相关文章:

java - 如何将小数点后 10 到 5 的幂四舍五入

c# - .NET Web API 返回带有很多小数位的 double

java - spring中的model和session有什么区别

java - 从在 Tomcat 上运行的 Spring Controller 使用 Runtime.getRuntime().exec 调用基于 .Net Window 的应用程序

java - 用括号中的技巧将除法值加倍

jqGrid 单元格编辑 - 双击编辑?

java - float 型最多可容纳38个数字,双型最多可容纳300个数字。这些神奇的数字从何而来?

java - 我怎样才能在java中获得视频长度

java - JPA 查询和关系

java - 如何将 double 舍入到最接近的整数然后转换为 float ?