这是我关于这个主题的第二篇文章。我发现了几十篇关于这个主题的帖子,但没有一个可行的解决方案。位置侦听器将为您提供一个纬度,例如 3.734567E7。我的目标是将该纬度的准确性降低到小数点后四位。我不在乎我是截断它还是舍入它。以下代码...
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 );
产生三行:37345670 3.734567E7 3.734567E7
这些处理都不会对数字产生任何影响。
当我不得不在我的 Windows Phone 应用程序上使用 C# 执行此操作时,我执行了以下操作...
myExecution.latitude = Math.Round(newLatitude, 4); 我花了不到一分钟的时间。我有一个多星期的时间试图弄清楚如何在 java 中做同样的事情。据我所知,Java math.round 很奇怪,无法指定您希望舍入多少小数位以使其完全无用。
我意识到科学记数法只应该是一种显示值的方式,与数量的内部存储方式没有任何关系。这使得这个问题更加令人困惑。
任何人都可以修改上面的代码以使其四舍五入到小数点后 4 位吗?
(但你不能改变第一行代码。它必须用科学计数法指定。如果你用十进制计数法指定它会很好用。谢谢,Gary