1

重複の可能性:
double を小数点以下 2 桁に丸める

私はこのような緯度と経度を持っています、

x1: 11.955165229802363
y1: 79.8232913017273

小数点以下4桁を変換したい

x1 = 11.9552
y1 = 79.8233
4

8 に答える 8

8

試す

double roundTwoDecimals(double d)
{
    DecimalFormat twoDForm = new DecimalFormat("#.####");
    return Double.valueOf(twoDForm.format(d));
}
于 2012-08-03T11:55:48.607 に答える
2
Math.ceil(x1* 10000) / 10000

10000 を 10^N に置き換えます。ここで、N はドットの後の桁数です。ドットの後の 4 桁の場合、精度が失われることはありません。

于 2012-08-03T11:59:15.940 に答える
1

小数を丸めたり切り捨てたりする必要があり、速度はそれほど考慮しないと仮定すると、4 に設定して使用BigDecimal(BigInteger unscaledVal, int scale)する必要があります。scale

于 2012-08-03T11:59:28.750 に答える
1

これを試して

String.format("%.4f", 11.955165229802363)
于 2012-08-03T11:57:48.387 に答える
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;
}
于 2012-08-03T11:59:31.890 に答える
0
DecimalFormat dtime = new DecimalFormat("#.####"); 
                                           ^^^^
x1= Double.valueOf(dtime.format(x1));
于 2012-08-03T11:55:44.130 に答える
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));
于 2012-08-03T11:59:47.733 に答える
0

そのような値のみを表示したい場合は、DecimalFormat を使用して値を文字列に変換してから表示します。

本当に 4 桁に四捨五入したい場合は、10000 を掛けて四捨五入し、再度割ることで実現できます。ただし、すべての 10 進数を浮動小数点形式で適切に表現できるわけではないため、これはお勧めできません。変更は、あなたがすでに持っていたようなものを手に入れるだけです.

内部状態として 4 桁で動作するようにしたい場合は、代わりに BigDecimal を使用してください。あなたが望むことをするために適切に装備されています。

于 2012-08-03T12:01:44.213 に答える