java - 如何将纬度减少到小数点后四位

标签 java android

这是我关于这个主题的第二篇文章。我发现了很多关于这个主题的帖子,但没有一个有效的解决方案。位置监听器将为您提供纬度,例如 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 位?

(但是你不能改变第一行代码。它必须用科学记数法指定。如果你用十进制记数法指定它,它会很好地工作。 谢谢,加里

最佳答案

3.734567E7 表示 3.734567 x 107 即 37,345,670。所以没有四舍五入的小数...

如果你想要 3.734600E7,你可以使用 Math.round(d/1000) * 1000)

关于java - 如何将纬度减少到小数点后四位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14006816/

相关文章:

java - Selenium 测试运行不会保存 cookie?

java - nginx:使用nginx作为反向代理时是否可以在访问日志中捕获响应头?

android - 从外部 dex/jar 文件加载 Activity

Android 如何将实时数据从本地服务向上传递到 Activity ?

android - 处理问题 "javax/xml/parsers/DocumentBuilder.class": Ill-advised or mistaken usage of a core class (java. * 或 javax.*)

android - 配置问题。找不到 “Configuration with name '默认值”

java - 如何找到 apache-jakarta?

java - 我可以恢复在 Eclipse 中删除的文件吗?

java - 如何用文件源替换 SecretKeyFactory.getInstance ("Some String")

android - 在单独的文件中使用 GUI 的 AsyncTask