package water.rapids.ast.prims.math;
import water.rapids.ast.prims.operators.AstBinOp;
/**
*/
public class AstSignif extends AstBinOp {
public String str() {
return "signif";
}
public double op(double x, double digits) {
if (Double.isNaN(x)) return x;
if (digits < 1) digits = 1; //mimic R's base::signif
if ((int) digits != digits) digits = Math.round(digits);
java.math.BigDecimal bd = new java.math.BigDecimal(x);
bd = bd.round(new java.math.MathContext((int) digits, java.math.RoundingMode.HALF_EVEN));
return bd.doubleValue();
}
}