java 让float 保留2位小数
时间: 2024-09-18 18:14:13 浏览: 69
Java保留两位小数的几种写法总结
要让Java `float` 类型的数据保留两位小数,你可以使用以下几种方法:
1. **使用`Math.round()` 和 casting**[^1]:
```java
double originalValue = 3.14159265359;
float roundedValue = (float) Math.round(originalValue * 100) / 100; // 四舍五入到最接近的整数,再转换回float并除以100
System.out.printf("Rounded to 2 decimal places: %.2f%n", roundedValue); // 输出: Rounded to 2 decimal places: 3.14
```
2. **使用`DecimalFormat`**:
```java
import java.text.DecimalFormat;
float floatValue = 3.14159265359f;
DecimalFormat df = new DecimalFormat("#.00");
String formattedString = df.format(floatValue);
float roundedValue = Float.parseFloat(formattedString);
System.out.println("Rounded to 2 decimal places: " + roundedValue); // 输出: Rounded to 2 decimal places: 3.14
```
3. **使用`BigDecimal` and `setScale`**:
```java
import java.math.BigDecimal;
float floatValue = 3.14159265359f;
BigDecimal bd = new BigDecimal(Float.toString(floatValue));
bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP); // 四舍五入
float roundedValue = bd.floatValue();
System.out.println("Rounded to 2 decimal places: " + roundedValue); // 输出: Rounded to 2 decimal places: 3.14
```
请注意,`Math.round()` 方法会直接返回整数,如果原数值本身就恰好位于两个最近的整数之间(如 0.5),结果可能会与期望不符。如果你需要精确控制小数点后的位数,`DecimalFormat` 或 `BigDecimal` 是更好的选择。
阅读全文