猿问

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

我在 Anroid Studio 中使用 DecimalFormat。我有一个双精度值,我想要十进制格式。但是,当我以十进制格式给出双精度值时;他们说:“找到字符串值”。但是,这是一个双重价值。我尝试转换为字符串,但它不起作用。我能做些什么?


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

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

   Double latlast = DF.format(lat);


蓝山帝景
浏览 112回答 3
3回答

拉莫斯之舞

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

慕神8447489

DecimalFormat.format(double val)回报String,不是Double。double lat = (latPoint * 180.0 / Math.PI);DecimalFormat DF = new DecimalFormat("#.########");String latlast = DF.format(lat);

收到一只叮咚

如果你想将 double 格式化为 double 并满足一些要求,那么你可以再次转换它,因为double lat = (latPoint * 180.0 / Math.PI);DecimalFormat format = new DecimalFormat("#.####");String format1 = format.format(ad);此代码将格式化的双精度返回到字符串形式。所以你必须用这个再次将它转换成双倍double number = Double.parseDouble(format1);
随时随地看视频慕课网APP

相关分类

Java
我要回答