Resto是12.7,方法getTagli返回10.0,2.0,0.5,但我的结果必须是10.0,2.0,0.5,0.2

时间:2017-03-30 17:49:16

标签: java binary double approximation calculation

  

很容易,有两个集合(列表)和tagli;滚动列表和当resto>列表中的项目,拾取该项目并减去该项目直到恢复等于0。

public static ArrayList<Double> getTagli(Double resto) {
    Set list = Cassa.getSoldi().keySet();   // 10, 5, 2, 1, 0.5, 0.2, 0.1
    Iterator iter = list.iterator();
    Double divisore = (Double) iter.next();
    while (iter.hasNext() && resto > 0) {
        resto = Cassa.divisioniSuccessive(resto, divisore);
        if (resto<divisore)
            divisore = (Double) iter.next();
    }
    return tagli;
}

private static Double divisioniSuccessive(Double dividendo, Double divisore) {
    if (dividendo >= divisore) {
        tagli.add(divisore);
        dividendo = (Double) dividendo - (Double) divisore;
    }
    return dividendo;
}

1 个答案:

答案 0 :(得分:-1)

public static double arrotonda( double numero, int nCifreDecimali ){
    return Math.round( numero * Math.pow( 10, nCifreDecimali ) )/Math.pow( 10, nCifreDecimali );
}