Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何格式化解析并传递给editText的数字?_Android_Parsing_Exception_Formatting_Android Edittext - Fatal编程技术网

Android 如何格式化解析并传递给editText的数字?

Android 如何格式化解析并传递给editText的数字?,android,parsing,exception,formatting,android-edittext,Android,Parsing,Exception,Formatting,Android Edittext,我在编辑文本中格式化数字时遇到问题。我希望用户能够将数字输入为正整数或负整数(5或-5),并将其格式化为十进制(.05)。目前,它的格式是.05.0,而不是.05,我不知道为什么。此外,如果用户输入错误的文本或将字段留空,我希望将editText设置为“0”。但是,我得到了一个错误。非常感谢您的帮助 public void checkPremium(){ double number = Double.parseDouble(premium.getText().toString());

我在编辑文本中格式化数字时遇到问题。我希望用户能够将数字输入为正整数或负整数(5或-5),并将其格式化为十进制(.05)。目前,它的格式是.05.0,而不是.05,我不知道为什么。此外,如果用户输入错误的文本或将字段留空,我希望将editText设置为“0”。但是,我得到了一个错误。非常感谢您的帮助

public void checkPremium(){
     double number = Double.parseDouble(premium.getText().toString());
     if(premium.getText().toString().equals(".")||premium.getText().toString().equals("-.")||premium.getText().toString().equals("")){
         premium.setText("0");
     }else if(number >= 1 || number < 10){
         premium.setText(".0"+number);
     }else if(number >= 10){
         premium.setText("."+number);
     }else if(number <= -1 || number > -10){
         premium.setText(".0"+Math.abs(number));
     }else if(number <= -10){
         premium.setText("."+Math.abs(number));
     }else if(number <1 || number >0){
           //Do Nothing
         }       
 }
public void checkPremium(){
double number=double.parseDouble(premium.getText().toString());
如果(premium.getText().toString()等于(“.”| | premium.getText().toString().equals(“-”)| | premium.getText().toString().equals(“){
溢价。setText(“0”);
}否则如果(数字>=1 | |数字<10){
premium.setText(“.0”+数字);
}否则,如果(数字>=10){
premium.setText(“.”+编号);
}否则,如果(数字-10){
premium.setText(“.0”+数学abs(数字));

}否则,如果(数字双精度分析器会将“.0”添加到您的数字中。您最好添加字符串,而不是已解析的双精度。

使用十进制格式化程序或字符串说明符。检查以下答案: 更简单的代码是:

Double number = Double.parseDouble(premium.getText().toString());
if (number.isInfinite() || number.isNan()) number = 0F;
premium.setText(String.format("%.2f", Math.abs(number)/100);

希望这对您有所帮助……

如果您不希望edittext字段中出现任何其他错误字符或空格,最好使用try-and-catch块

这是代码,希望你会发现它有用

          try{
                 number = Double.parseDouble(premium.getText().toString());

                 if(number >= 1 || number < 10){
                     premium.setText(String.valueOf(.01*number));
                 }else if(number >= 10){
                     premium.setText(String.valueOf(.1*number));
                 }else if(number <= -1 || number > -10){
                     premium.setText(String.valueOf(0.01*Math.abs(number)));
                 }else if(number <= -10){
                     premium.setText(String.valueOf(0.1*Math.abs(number)));
                 }else if(number <1 || number >0){
                       //Do Nothing
                 }

             }catch(Exception e)
             {
                 premium.setText("0");
             }
试试看{
number=Double.parseDouble(premium.getText().toString());
如果(数字>=1 | |数字<10){
premium.setText(String.valueOf(.01*number));
}否则,如果(数字>=10){
premium.setText(String.valueOf(.1*number));
}否则,如果(数字-10){
premium.setText(String.valueOf(0.01*Math.abs(number));

}else if(数字)在第2和第4种情况下,您可能希望将| |更改为&&