String to Double - 当数字有4位及更多位数时出错

时间:2014-08-13 21:32:02

标签: java android

我尝试制作一个小程序,可以来回转换里程数,但每当数字有4位数时,程序会立即冻结

部分代码:

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

    double inputValue = Double.parseDouble(text.getText().toString());
    NumberFormat nf = NumberFormat.getInstance();
    nf.setMaximumFractionDigits(2);
    text.setText(String.valueOf(nf.format(KmToMiles(inputValue))));


    text.setText(String.valueOf(nf.format(MilesToKm(inputValue))));
    jednotka.setText("kilometers");
    km.setChecked(false);

如何使返回的值具有少量小数而不检索错误?如果我用整数交换双倍并删除数字格式,我得到没有错误,但转换是不准确的,没有小数。使用没有NF的双打我得到太多小数

1 个答案:

答案 0 :(得分:1)

您可以使用String.Format中的String class来指定所需的小数位数。

<强>样品:

   String s = String.format("%.4f", KmToMiles(25)) //.4f means round it to 4 decimal places
   text.setText(s);

现在这将导致40.2336

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