可能重复:
Round a double to 2 significant figures after decimal point
我有这样的拉特和长点,
x1: 11.955165229802363
y1: 79.8232913017273
我需要转换4个小数点
x1 = 11.9552
y1 = 79.8233
答案 0 :(得分:8)
尝试
double roundTwoDecimals(double d)
{
DecimalFormat twoDForm = new DecimalFormat("#.####");
return Double.valueOf(twoDForm.format(d));
}
答案 1 :(得分:2)
Math.ceil(x1* 10000) / 10000
将10000替换为10 ^ N,其中N是点后的位数。如果点后有4位数,则不应丢失精度。
答案 2 :(得分:1)
试试这个
String.format("%.4f", 11.955165229802363)
答案 3 :(得分:1)
假设您想要舍入/截断小数,并且速度不是一个很大的考虑因素,您希望BigDecimal(BigInteger unscaledVal, int scale)
使用scale
设置为4。
答案 4 :(得分:0)
DecimalFormat dtime = new DecimalFormat("#.####");
^^^^
x1= Double.valueOf(dtime.format(x1));
答案 5 :(得分:0)
float round = Round(num,4);
System.out.println("Rounded data: " + round);
}
public float Round(float Rval, int Rpl) {
float p = (float)Math.pow(10,Rpl);
Rval = Rval * p;
float tmp = Math.round(Rval);
return (float)tmp/p;
}
答案 6 :(得分:0)
double d1 = Double.valueOf(x1);
double d2 = Double.valueOf(x1);
DecimalFormat df = new DecimalFormat("#.####");
System.out.print("x1 = "+df.format(d1));
System.out.print("x2 = "+df.format(d2));
答案 7 :(得分:0)
如果您只想显示这样的值,请使用DecimalFormat将值转换为字符串,然后显示该值。
如果你真的想将它四舍五入到四位数,你可以通过乘以10000,四舍五入然后再划分来实现。但是,我建议不要这样做,因为并非所有十进制数都能以浮点格式正确表示。变化是你只会得到像你已经拥有的东西。
如果您确实希望将四位数作为内部状态使用,请改用BigDecimal。它配备齐全,可以满足您的需求。