我在editText中格式化数字时遇到问题。我希望用户能够输入一个数字作为正整数或负整数(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
}
}
答案 0 :(得分:1)
Double解析器会在您的号码中添加“.0”。你最好添加你的字符串,而不是你解析的双。
答案 1 :(得分:0)
使用十进制格式化程序或字符串说明符。检查以下答案: How to print a double with two decimals in Android?
答案 2 :(得分:0)
更简单的代码是:
Double number = Double.parseDouble(premium.getText().toString());
if (number.isInfinite() || number.isNan()) number = 0F;
premium.setText(String.format("%.2f", Math.abs(number)/100);
希望这会有所帮助......
答案 3 :(得分:0)
如果你不想在edittext字段中有任何其他错误字符或空格,最好使用try和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");
}