【问题标题】:How to get a double to stop giving really long decimal places?如何获得双精度以停止给出非常长的小数位?
【发布时间】:2013-09-26 21:13:26
【问题描述】:

例如这里,calculateVolume() 使用双精度数

private double myRadius;
private double myVolume;
private double mySurfaceArea;
private final static double pi = 3.14;


public double calculateVolume(){
    myVolume = (4.0/3)*pi*(Math.pow(myRadius,3));
    return myVolume;
}

当我给 myRadius 赋值 6 时,它返回 904.3199999999999。有没有办法让它变成 904.32?

【问题讨论】:

标签: java function methods int double


【解决方案1】:

您可以使用BigDecimal 类。在setScale() 方法中,您可以定义您需要的精度:

double volume = calculateVolume();
BigDecimal decimal = new BigDecimal(volume).setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(decimal);

【讨论】:

    【解决方案2】:

    您可以使用 DecimalFormat 来执行此操作。

    double d= 1.234567;
    DecimalFormat df = new DecimalFormat("#.##");
    String s = df.format(d);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 2017-12-18
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多