- 1.使用
String.format("%.2f",num);
这种方法可以用float
,double
接收数据类型,可以四舍五入保留两位小数,但是小数点第二位是0的话会不显示。以下代码用到此方法的语句:
public class Main {
public static void main(String[] args) {
double x = 2.585;
x = Double.parseDouble(String.format("%.2f",x));
System.out.println(x);
}
}
- 2.使用
DecimalFormat
这种方法可以用float
,double
接收数据类型。有多重模式可以使用(UP
、DOWN
、HALF_UP
、HALF_DOWN
)等等,HALF_UP
可以四舍五入,如保留两位小数,小数点第二位是0的话会不显示,整数位有时候会不显示,可以把#号改成0整数位就会显示了。以下代码用到此方法的语句:
import java.math.RoundingMode;
import java.text.DecimalFormat;
public class Main {
public static void main(String[] args) {
double x = 2.585;
DecimalFormat df = new DecimalFormat("#.#"); //不省略0用:0.00
df.setRoundingMode(RoundingMode.HALF_UP);
String z = df.format(x);
System.out.println(z);
}
}
注意:此种方式只能四舍五入小数点后一位,两位以上,会默认使用HALF_EVEN模式,尾数是5时向偶数位舍入
- 3.使用
BigDecimal
,这种方式可以弥补上面只能舍入一位小数的缺陷,看代码
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
double x = 2.5555555;
BigDecimal bd = new BigDecimal(String.valueOf(x));
String z = String.valueOf(bd.setScale(3, RoundingMode.HALF_UP));
System.out.println(z);
}
}
网友评论