在float中设置精度

时间:2016-01-25 13:33:06

标签: java floating-point decimal

我有以下代码

<html>
<head></head
<body>

<!-- this is my template generated with Symfony -->
<div ...>
 <ul>
   <li><angularComponent></angularComponent></li>
   <li><angularComponent></angularComponent></li>
 </ul>
</div>

</body>
</html>

form.format(f)返回字符串,但我需要它是浮点数。 我想设置我正在打印的数据的精度而不改变数据类型,即浮点数,我该怎么做。

2 个答案:

答案 0 :(得分:2)

float在打印方面没有精确度。这只是一个价值。

您可以做的是对结果进行舍入,以便在打印结果时不超过2位小数。

public static float round2(float f) {
    final float factor = 1e2f;
    if (f < Integer.MIN_VALUE/factor || f > Integer.MAX_VALUE/factor)
       return f;
    return Math.round(f * factor) / factor;
}

注意:float的精确度非常差,使用double或考虑BigDecimal可以更好地控制它打印的小数位数。 / p>

要围绕double,您可以使用

public static double round2(double f) {
    final double factor = 1e2;
    if (f < Long.MIN_VALUE/factor || f > Long.MAX_VALUE/factor)
       return f;
    return Math.round(f * factor) / factor;
}

答案 1 :(得分:1)

您可以使用BigDecimal(另请参阅Javadoc

float f = 125.0f;
BigDecimal value = new BigDecimal(f).setScale(2, RoundingMode.HALF_UP);
System.out.println(value.floatValue());