这是我关于这个主题的第二篇文章.我已经找到了关于这个主题的几十个帖子,而不是一个有效的解决方案.位置监听器将为您提供纬度,例如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够了,根据我的理解,没有办法指定你希望舍入多少小数位以使它完全没用.
我意识到科学记数法只应该是一种显示价值的方式,而与内部存储金额的方式没有任何关系.这使得这个问题更加令人困惑.
任何人都可以修改上面的代码,使其四舍五入到小数点吗?
(但你不能改变第一行代码.它必须用科学记数法指定.如果你用十进制表示法指定它,它的工作非常好.谢谢,加里
3.734567E7表示3.734567 x 10 7,即37,345,670.所以没有小数要圆...
如果你想要3.734600E7,你可以使用Math.round(d / 1000) * 1000).
| 归档时间: |
|
| 查看次数: |
1094 次 |
| 最近记录: |