これは、このテーマに関する私の2番目の投稿です。私はこのテーマに関する数十の投稿を見つけましたが、機能する単一の解決策ではありません。ロケーションリスナーは、3.734567E7などの緯度を提供します。私の目標は、その緯度の精度を小数点以下4桁に減らすことです。切り捨てても丸めても構いません。次のコード...
Double d = Double.parseDouble("3.734567E7");
NumberFormat fmtr = new DecimalFormat("###.####");
String f = fmtr.format(d);
Log.w(getClass().getName(), "result using DecimalFormat = " + f );
d = (double) Math.round(d * 10000.0) / 10000.0;
Log.w(getClass().getName(), "result using math round = " + d );
f = d.toString();
Log.w(getClass().getName(), "result string using math round = " + f );
3つの行を生成します:37345670 3.734567E7 3.734567E7
この処理はいずれも数に影響を与えません。
Windows PhoneアプリのC#でこれを実行する必要があったとき、次のことを実行しました...
myExecution.latitude = Math.Round(newLatitude、4); 私の時間は1分もかかりませんでした。私は1週間以上、Javaで同じことを行う方法を見つけようとしています。Java math.roundは、奇妙なことに、私が理解できる限り、完全に役に立たないようにするために丸めたい小数点以下の桁数を指定する方法がありません。
科学的記数法は値を表示する方法としてのみ想定されており、金額が内部でどのように格納されるかとは関係がないことを理解しています。これにより、この問題はさらに複雑になります。
上記のコードを変更して小数点以下4桁に丸めることはできますか?
(ただし、コードの1行目を変更することはできません。科学的記数法で指定する必要があります。10進法で指定すると、うまく機能します。ありがとう、Gary