Java - 舍入 99999999999999.9999

标签 java rounding

这个问题在这里已经有了答案:





The accuracy of a double in general programming and Java

(2 个回答)


2年前关闭。




我正在尝试使用 Java 进行舍入和格式化技术,因为我必须将我的值保存在具有某些特定格式的数据库中。

我的数据库列的数据精度为 18,4,这意味着最多 14 个整数和 4 个小数位。

现在我正在尝试最大可能值的情况,即 99999999999999.9999。当我执行下面的代码时,我得到一个四舍五入的值 1000000000000000。但是,我想存储提供的确切值。

任何人都可以建议将其保留在 java 变量中吗?

    DecimalFormat df2 = new DecimalFormat( "#.####" );
    df2.setRoundingMode(RoundingMode.CEILING);
    double number = Double.parseDouble("99999999999999.9999");
    System.out.println("Format: " + df2.format(number));

最佳答案

您可以使用 BigDecimal

BigDecimal number = new BigDecimal("99999999999999.9999");

关于Java - 舍入 99999999999999.9999,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60734020/

相关文章:

javascript - 为什么通过舍入(javascript)尝试得到NaN?

objective-c - 将数字舍入到Objective-C中的指定精度

java - 没有方法的空接口(interface)有什么用?

java - 无法将MySQLDataSource转换为java.sql.driver

java - 如何在 2-3 Tree java 中找到要搜索的正确子项

java - 在java中将浮点值四舍五入到最接近的整数的最有效方法是什么?

java - 编译器输出IndexOutOfBoundsException

java - HTTP 和数据库的 DAO 模式

c++ - 为什么 GCC 允许在 C++ 中使用 round() 即使带有 ansi 和 pedantic 标志?

c++将数字从零四舍五入