我试图将double值作为2个精度值的舍入值。我通过使用Date Format获得它,但它是在String中。 如何在不使用日期格式的情况下将double值设置为舍入为精度。
答案 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 mode。 Banker'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)