为什么 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);
我在 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);