如何将纬度减少到4位小数

Dea*_*ely 2 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 );
Run Code Online (Sandbox Code Playgroud)

产生三条线:37345670 3.734567E7 3.734567E7

这个处理都没有对数字产生任何影响.

当我不得不在我的Windows手机应用程序中使用C#执行此操作时,我执行了以下操作...

myExecution.latitude = Math.Round(newLatitude,4); 我花了不到一分钟的时间.我有一个多星期的时间试图弄清楚如何在java中做同样的事情.Java math.round,oddley够了,根据我的理解,没有办法指定你希望舍入多少小数位以使它完全没用.

我意识到科学记数法只应该是一种显示价值的方式,而与内部存储金额的方式没有任何关系.这使得这个问题更加令人困惑.

任何人都可以修改上面的代码,使其四舍五入到小数点吗?

(但你不能改变第一行代码.它必须用科学记数法指定.如果你用十进制表示法指定它,它的工作非常好.谢谢,加里

Sam*_*Sam 5

3.734567E7表示3.734567 x 10 7,即37,345,670.所以没有小数要圆...

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

  • 真的,[这一整个事情](http://stackoverflow.com/a/13943358/1438733)?哦,好吧...... +1击败我.:) (2认同)