DecimalFormat的不可预测的行为

时间:2017-11-27 09:29:21

标签: java

我知道DecimalFormat使用HALF_EVEN舍入作为默认值,并且向最近的邻居"舍入。 但在某些情况下,DecimalFormat有奇怪的行为:

    DecimalFormat df = new DecimalFormat();
    df.setMinimumFractionDigits(2);
    df.setMaximumFractionDigits(2);

    System.out.println(df.getRoundingMode()); // returns HALF_EVEN

    System.out.println(df.format(12766.135)); // returns 12 766,14
    System.out.println(df.format(22766.135)); // returns 22 766,13
    System.out.println(df.format(12766.155)); // returns 12 766,16
    System.out.println(df.format(22766.155)); // returns 22 766,15
    System.out.println(df.format(12766.185)); // returns 12 766,18
    System.out.println(df.format(22766.185)); // returns 22 766,19

    System.out.println(df.format(12766.145)); // returns 12 766,15
    System.out.println(df.format(22766.145)); // returns 22 766,15
    System.out.println(df.format(12766.175)); // returns 12 766,17
    System.out.println(df.format(22766.175)); // returns 22 766,17

这是一个错误还是我做错了什么?测试了java 1.8.0_141,Eclipse 4.6.3。

0 个答案:

没有答案