我有一些双我的APP,当调用AlertDialog.Builder方法时,某些值显示NaN。
我应该怎么做,AlertDialog.Builder显示0,00而不是NaN?
贝娄,我的代码片段^^
double valor_kwh_mes;
try {
valor_kwh_mes = Double.parseDouble(kWhK.getText().toString().replace(',', '.'));
} catch (NumberFormatException e) {
valor_kwh_mes = 0; // valores padrão
}
double quantidade_aparelhos;
try {
quantidade_aparelhos = Double.parseDouble(aparelhosK.getText().toString().replace(',', '.'));
} catch (NumberFormatException e) {
quantidade_aparelhos = 1; // valores padrão
}
double uso_hora_diaI;
try {
uso_hora_diaI = Double.parseDouble(usohoradiaIK.getText().toString().replace(',', '.'));
} catch (NumberFormatException e) {
uso_hora_diaI = 0; // valores padrão
}
double uso_minuto_diaI;
try {
uso_minuto_diaI = Double.parseDouble(usominutodiaIK.getText().toString().replace(',', '.'));
} catch (NumberFormatException e) {
uso_minuto_diaI = 0; // valores padrão
}
double uso_hora_diaR;
try {
uso_hora_diaR = Double.parseDouble(usohoradiaRK.getText().toString().replace(',', '.'));
} catch (NumberFormatException e) {
uso_hora_diaR = 0; // valores padrão
}
double uso_minuto_diaR;
try {
uso_minuto_diaR = Double.parseDouble(usominutodiaRK.getText().toString().replace(',', '.'));
} catch (NumberFormatException e) {
uso_minuto_diaR = 0; // valores padrão
}
double uso_regular;
try {
uso_regular = Double.parseDouble(usoregularK.getText().toString().replace(',', '.'));
} catch (NumberFormatException e) {
uso_regular = 7.5; // valores padrão
}
double tarifa_cobrada;
try {
tarifa_cobrada = Double.parseDouble(tarifaK.getText().toString().replace(',', '.'));
} catch (NumberFormatException e) {
tarifa_cobrada = 0; // valores padrão
}
// total e o valor a ser pago quando sabe-se quanto kwh Mês o aparelho consome
double dias_mes = 4 * uso_regular;
double tempo_diario_inmetro = uso_hora_diaI * 60 + uso_minuto_diaI; // 2 HORAS = 120 MINUTOS
double kwh_minuto = valor_kwh_mes / 30 / tempo_diario_inmetro; // 0,0097222222222222
double kwh_dia_inmetro_gasto = kwh_minuto * quantidade_aparelhos * tempo_diario_inmetro; // 0,0097222222222222 * 1 * 120 = 1,166666666666664 (1,17)
double kwh_mensal_inmetro_gasto = kwh_minuto * tempo_diario_inmetro * quantidade_aparelhos * 30; // 0,0097222222222222 * 1 * uso_regular = 34,99999999999992 (35,0)
double reais_gasto_mensais_inmetro = valor_kwh_mes * quantidade_aparelhos * tarifa_cobrada; // 35 * 1 * 1 = 35
double tempo_diario_real = uso_hora_diaR * 60 + uso_minuto_diaR; // 2 HORA = 120 MINUTOS
double kwh_dia_real_gasto = kwh_minuto * quantidade_aparelhos * tempo_diario_real; // 0,0097222222222222 * 1 * 120 = 1,166666666666664 (1,17)
double kwh_mensal_real_gasto = kwh_minuto * tempo_diario_real * quantidade_aparelhos * dias_mes; // 0,0097222222222222 * 120 * 1 * uso_regular = 34,99999999999992 (35,0)
double kwh_real_gasto = kwh_minuto * tempo_diario_real * dias_mes; // 0,0097222222222222 * 120 * uso_regular = 34,99999999999992 (35,0)
double reais_gasto_mensais = kwh_real_gasto * quantidade_aparelhos * tarifa_cobrada; // 35 * 1 * 1 = 35
// convertendo o valor a se pago para 2 casas decimais
String totalIstr = String.format("%,.2f", reais_gasto_mensais_inmetro);
String kWhImensalstr = String.format("%,.2f", kwh_mensal_inmetro_gasto);
String kWhIdiastr = String.format("%,.2f", kwh_dia_inmetro_gasto);
String totalstr = String.format("%,.2f", reais_gasto_mensais);
String kWhRmensalstr = String.format("%,.2f", kwh_mensal_real_gasto);
String kWhRdiastr = String.format("%,.2f", kwh_dia_real_gasto);
// preparando AlertDialog: instanciando e setando valores o objeto AlertDialog
AlertDialog.Builder dialogo = new AlertDialog.Builder(kwh.this);
// setando título a ser exibido
dialogo.setTitle("Resultado");
// setando mensagem a ser exibida
dialogo.setMessage("Valor mensal R$: " + totalstr + "\nValor mensal Inmetro R$: " + totalIstr + "\nkWh Mês: " + kWhRmensalstr + "\nkWh Mês Inmetro: " + kWhImensalstr + "\nkWh Dia " + kWhRdiastr + "\nkWh Dia Inmetro " + kWhIdiastr);
// setando botão a ser exibida
dialogo.setNeutralButton("OK", null);
// chamando o AlertDialog para exibir todas as menssagens acima
dialogo.show();
感谢您将来的任何答案
答案 0 :(得分:1)
您可以像这样检查Double的NaN值:
if(myDouble.isNaN()){
myDouble=0;
}
这确保了double值为零而不是Nan