如何在Java中舍入double值

时间:2013-10-16 07:13:42

标签: java

我试图将double值作为2个精度值的舍入值。我通过使用Date Format获得它,但它是在String中。 如何在不使用日期格式的情况下将double值设置为舍入为精度。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

正如EJP和Leonidos在评论中所说,通过BigDecimal课程而不是double primitive进行适当的舍入。

仔细选择rounding modeBanker's Rounding是打破关系(甚至分裂)的常用方法,但最好的方法取决于你的目的和情况。

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)

请参阅:How to round a number to n decimal places in Java