Java-四舍五入9999999999.9999

Java-四舍五入9999999999.9999,java,rounding,Java,Rounding,我正在用Java尝试舍入和格式化技术,因为我必须用一些特定的格式将我的值保存在数据库中 我的数据库列的数据精度为18,4,这意味着最大值为14个整数和4个小数位 现在我正在尝试最大可能值的情况,即99999999999.9999。当我执行下面的代码时,我得到了10000000000000的四舍五入值。但是,我希望存储提供的确切值 有人能建议保持它在java变量中的状态吗 DecimalFormat df2 = new DecimalFormat( "#.####" ); df2.

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

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

现在我正在尝试最大可能值的情况,即99999999999.9999。当我执行下面的代码时,我得到了10000000000000的四舍五入值。但是,我希望存储提供的确切值

有人能建议保持它在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");

精度为18,2,即14个整数和4个小数位
对于精度仅为53位~15位的double是不可能的任何其他选项?数据库列的精度不应该为18,4吗?如果你想要4个小数位18,2不是一个符号,15个整数和2个小数位吗?对不起,是我的打字错误,18,4是14个整数值和4个小数位。