1

私がグーグルで見つけたものはすべて、次のいずれかが2倍を小数点以下2桁に切り捨てると言っています。

double roundToFourDecimals(double d)
{
    DecimalFormat twoDForm = new DecimalFormat("#.##");
    double myD = Double.valueOf(twoDForm.format(d));
    return myD;
}

double nextLon = (double)Math.round(bnextLon * 100.0) / 100.0;

しかし、どちらも私にはうまくいきません。double の値は で3.3743984E7あり、結果は同じです。どうしたの?

4

2 に答える 2

5

何も間違っていない。3.3743984E7は科学表記法です。あれは:

3.3743984E7 = 3.3743984 * 10^7 = 33743984

33,743,984.0 を小数点第 2 位に四捨五入すると、33,743,984.0 になります。おそらく を指定33743984.05918した場合、 に丸められ33743984.06ますが、どちらの出力も となります3.3743984E7( @Samが無効を発見したため、前のコメントは削除されました。)

丸めコードが機能することを確認できます

public class Main {
    public static void main(String[] args) {
        double bnextLon = 275914.18410;
        double nextLon = (double) Math.round(bnextLon * 100.0) / 100.0;
        System.out.println(bnextLon + " became " + nextLon);
    }
}

275914.1841 became 275914.18

必要な値と外したい値を決定するだけでよいと思います。コードは、指定しているものを正確に提供しています。

于 2012-12-18T23:44:34.377 に答える
2

3.3743984E7を意味する33743984ため、 を掛けると が100得られ3374398400、丸めは何も変化せず、除算は元に戻ります。

1E5戻るよりも丸めて割る必要があります。

于 2012-12-18T23:45:54.990 に答える