我需要格式化一个浮点数到小数点后n位。
尝试BigDecimal,但是返回值不正确…
public static float Redondear(float pNumero, int pCantidadDecimales) {
// the function is call with the values Redondear(625.3f, 2)
BigDecimal value = new BigDecimal(pNumero);
value = value.setScale(pCantidadDecimales, RoundingMode.HALF_EVEN); // here the value is correct (625.30)
return value.floatValue(); // but here the values is 625.3
}
我需要返回一个带有我指定的小数点后数位的浮点值。
我需要Float值返回而不是Double
.
值得注意的是,不鼓励使用DecimalFormat构造函数。这个类的javadoc声明:
一般情况下,不要直接调用DecimalFormat构造函数,因为NumberFormat工厂方法可能返回DecimalFormat以外的子类。
https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html
所以你需要做的是(例如):
NumberFormat formatter = NumberFormat.getInstance(Locale.US);
formatter.setMaximumFractionDigits(2);
formatter.setMinimumFractionDigits(2);
formatter.setRoundingMode(RoundingMode.HALF_UP);
Float formatedFloat = new Float(formatter.format(floatValue));
值得注意的是,不鼓励使用DecimalFormat构造函数。这个类的javadoc声明:
一般情况下,不要直接调用DecimalFormat构造函数,因为NumberFormat工厂方法可能返回DecimalFormat以外的子类。
https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html
所以你需要做的是(例如):
NumberFormat formatter = NumberFormat.getInstance(Locale.US);
formatter.setMaximumFractionDigits(2);
formatter.setMinimumFractionDigits(2);
formatter.setRoundingMode(RoundingMode.HALF_UP);
Float formatedFloat = new Float(formatter.format(floatValue));