舍入模式HALF_UP无法正常工作



据我了解,RoundingMode.HALF_UP使用我们传统的四舍五入风格。但是,它并没有给我预期的结果:

我正在使用具有不同参数(#,#.#,...等)并输入双精度 3.5545

// taken from Util    
public static void setRound(int a)      // Set rounding decimal places
{
    roundTo = a;
    String t = "#";
    if (roundTo > 0)
    {
        t += ".";
        for (int u = 1; u <= roundTo; u++)
            t += "#";
    }
    df = new DecimalFormat(t);
    df.setRoundingMode(RoundingMode.HALF_UP);
}
public static String round(double d)    // Rounds up answers to set place
{
    return df.format(d);
}
// taken from Testing class
 for (int a = 0; a < 5; a++)
    {
    Util.setRound(a);
    System.out.println(Util.round(3.5545));
    }
// results
0 -> 4              
1 -> 3.6   
2 -> 3.55   
3 -> 3.554 *(I want 3.555)*  
4 -> 3.5545

我将如何解决此问题(任何数字尾随 5 个整数)?任何帮助将不胜感激。

谢谢。

您可以使用 BigDecimal 比例方法,例如 ;

for (int i = 0; i < 5; i++) {
            BigDecimal bg = new BigDecimal("3.5545").setScale(i, RoundingMode.HALF_UP);
            System.out.println(bg);
        }

输出;

0 --> 4
1 --> 3.6
2 --> 3.55
3 --> 3.555
4 --> 3.5545
有一个

与此相关的 Java 8 错误,可能会也可能不会在您的 Java 版本中修复。

相关内容

  • 没有找到相关文章

最新更新