Java 字符串为双精度-当数字有4位或更多位数时出错

Java 字符串为双精度-当数字有4位或更多位数时出错,java,android,Java,Android,我试着做一个小程序,把英里数转换成公里数,但只要这个数字有4位数字,这个程序就会立即冻结 代码部分: private double KmToMiles(double inputValue) { return(inputValue * 1.609344); } private double MilesToKm(double inputValue) { return(inputValue * 0.621372); } 也 如何使返回的值具有少量小数而不检

我试着做一个小程序,把英里数转换成公里数,但只要这个数字有4位数字,这个程序就会立即冻结

代码部分:

private double KmToMiles(double inputValue) {
    return(inputValue * 1.609344);  
    }
    private double MilesToKm(double inputValue) {
    return(inputValue * 0.621372);
    }


如何使返回的值具有少量小数而不检索错误?如果我将double与integer交换并删除数字格式,则不会得到错误,但转换不准确,没有小数。使用不带NF的Double时,我会得到太多的小数

您可以使用
字符串类中的
字符串.Format
来指定所需的小数位数

示例:

   String s = String.format("%.4f", KmToMiles(25)) //.4f means round it to 4 decimal places
   text.setText(s);
现在这将导致
40.2336


如果您希望它是2位小数,只需将修饰符更改为
%.2f

,它可以与数字格式一起使用。。。那么问题是什么呢?您是否考虑过设置文本框中的最大字符数?这对我不起作用,但下面那个人的解决方案起了作用
   String s = String.format("%.4f", KmToMiles(25)) //.4f means round it to 4 decimal places
   text.setText(s);