這是我關於此主題的第二篇文章。我在這個主題上找到了數十篇文章,而不是一個可行的解決方案。位置偵聽器將爲您提供諸如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.734567E7 3.734567E7
沒有該處理的對數之間的任何影響。
,當我不得不做這在C#在我的Windows手機應用程序我做了以下...
myExecution.latitude = Math.Round(newLatitude,4);我花了不到一分鐘的時間。我有一個多星期的時間試圖找出如何在java中做同樣的事情。 Java的數學運算,很奇怪,沒有辦法指定你希望繞過多少個小數位來使它完全無用,據我所知。
我意識到科學記數法只應該是一種顯示數值的方式,並且與數量如何存儲在內部沒有任何關係。這使得這個問題更令人困惑。
任何人都可以修改上面的代碼,使其四捨五入到小數點後4位?
(但你不能改變的代碼1號線,必須在科學記數法來指定。如果你在它奇妙的作品十進制形式指定。 感謝,加里
幾個答案就在這裏,這樣做的幾種方法。 –
請發表你的'onLocationChanged()'代碼,這樣我就能明白你爲什麼會得到這麼大的數字......'Location#getLatitude()'應該返回-180到180之間的_usable_ double。 – Sam