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

Why Android DecimalFormat Found String Value?

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

   double lat = (latPoint * 180.0 / Math.PI);
   DecimalFormat DF = new DecimalFormat("#.########");
   Double latlast = DF.format(lat);

DecimalFormat.format(double val)returnsString,不是Double.

double lat = (latPoint * 180.0 / Math.PI);
DecimalFormat DF = new DecimalFormat("#.########");
String latlast = DF.format(lat);

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

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

要将其打印成您想要的任何内容,您必须将其打印为字符串:

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

这就是为什么 .format returns a String 而不是 double。

将最后一行更改为:

String latlast = DF.format(lat);

编辑:如果你想截断一个小数位到 6 位,试试这个。

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

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

double lat = (latPoint * 180.0 / Math.PI);
DecimalFormat format = new DecimalFormat("#.####");
String format1 = format.format(ad);

此代码 returns 将双精度格式化为字符串形式。

所以你必须用这个

再次将它转换成双精度
double number = Double.parseDouble(format1);