0

我试图将双精度值舍入到 2 精度值。我通过使用日期格式得到它,但它是字符串。如何在不使用日期格式的情况下将双精度值舍入到精度。

4

2 回答 2

1

这是示例

public class RoundValue 
{
    public static void main(String[] args)
    {   

    double kilobytes = 1205.6358;

    System.out.println("kilobytes : " + kilobytes);

    double newKB = Math.round(kilobytes*100.0)/100.0;
    System.out.println("kilobytes (Math.round) : " + newKB);

    DecimalFormat df = new DecimalFormat("###.##");
    System.out.println("kilobytes (DecimalFormat) : " + df.format(kilobytes));
    }
}

输出:

kilobytes : 1205.6358
kilobytes (Math.round) : 1205.64
kilobytes (DecimalFormat) : 1205.64
于 2013-10-16T07:20:26.020 回答
0

正如 EJP 和 Leonidos 在评论中所说,正确的舍入是通过BigDecimal类而不是double 原始的.

仔细选择您的舍入模式银行家四舍五入是打破平局(甚至分裂)的常用方法,但最好的方法取决于您的目的和情况。

double d = 7.345;
java.math.BigDecimal bigDecimal = new java.math.BigDecimal(d).setScale(2, java.math.RoundingMode.HALF_EVEN);
System.out.println("My big decimal is: " + bigDecimal ); // Outputs: 7.34 (using Banker's Rounding)

请参阅:如何在 Java 中将数字四舍五入到 n 位小数

于 2013-10-16T09:47:09.983 回答