有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

共 (3) 个答案

  1. # 1 楼答案

    DecimalFormat.format(double val)返回String,而不是Double

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

    DF.format(lat)正在返回一个String,您不能将Double格式化为任何您想要的格式
    双精度不能保留所有尾随零,例如:

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

    要将其打印为所需的任何内容,必须将其打印为字符串:

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

    这就是.format返回String而不是双精度的原因

    将最后一行更改为:

    String latlast = DF.format(lat);

    编辑:如果要小数位截断为6位,请尝试此操作

    double lat = (latPoint * 180.0 / Math.PI);
    double latFloor = Math.floor(lat * 1000000) / 1000000; //6 decimal places
    
  3. # 3 楼答案

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

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

    这段代码将格式化的double返回为字符串形式

    所以你必须用这个把它再次转换成double

    double number = Double.parseDouble(format1);