为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 Android DecimalFormat 找到字符串值?

为什么 Android DecimalFormat 找到字符串值?

蓝山帝景 2023-04-13 14:08:17
我在 Anroid Studio 中使用 DecimalFormat。我有一个双精度值,我想要十进制格式。但是,当我以十进制格式给出双精度值时;他们说:“找到字符串值”。但是,这是一个双重价值。我尝试转换为字符串,但它不起作用。我能做些什么?   double lat = (latPoint * 180.0 / Math.PI);   DecimalFormat DF = new DecimalFormat("#.########");   Double latlast = DF.format(lat);
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

DF.format(lat)正在返回 a String,您无法将 a 格式化Double为您想要的任何内容。
double不能包含所有尾随零例如:

System.out.println((double) 1.0000);  //Will print 1.0

要将它打印到任何你想要的东西,你必须将它打印为一个字符串:

System.out.println("1.0000"); //Will print 1.0000

这就是为什么.format返回 aString而不是 double 的原因。

将最后一行更改为:

String latlast = DF.format(lat);

编辑:如果您想将小数位截断为 6 位数字,请改用此方法。

double lat = (latPoint * 180.0 / Math.PI);
double latFloor = Math.floor(lat * 1000000) / 1000000; //6 decimal places


查看完整回答
反对 回复 2023-04-13
?
慕神8447489

TA贡献1780条经验 获得超1个赞

DecimalFormat.format(double val)回报String,不是Double。


double lat = (latPoint * 180.0 / Math.PI);

DecimalFormat DF = new DecimalFormat("#.########");

String latlast = DF.format(lat);


查看完整回答
反对 回复 2023-04-13
?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

如果你想将 double 格式化为 double 并满足一些要求,那么你可以再次转换它,因为


double lat = (latPoint * 180.0 / Math.PI);

DecimalFormat format = new DecimalFormat("#.####");

String format1 = format.format(ad);

此代码将格式化的双精度返回到字符串形式。


所以你必须用这个再次将它转换成双倍


double number = Double.parseDouble(format1);


查看完整回答
反对 回复 2023-04-13
  • 3 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信