2016-02-09 2 views
-1

У меня есть несколько двойных im my APP, когда вызывается метод AlertDialog.Builder, какое-то значение показывает NaN.Двойной = NaN, как сделать AlertDialog show 0,00

Что мне делать, чтобы 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

Пожалуйста, введите код. – Rohit5k2

+0

Во-первых, Builder имеет множество методов. Вы спрашиваете, как форматировать значение? Тривиальный ответ - заменить Nan на 0, но это не обязательно будет печатать 0,00. Также обратите внимание, что точка с запятой является десятичным разделителем только в некоторых странах. –

+0

* «Что я должен делать» * вы должны опубликовать наиболее подходящий код и немного разъяснить, что вы пытаетесь сделать. – codeMagic

ответ

1

Вы можете проверить значение NaN вашей Double, как это:

if(myDouble.isNaN()){ 
myDouble=0; 
} 

это гарантирует, что двойное значение равно нулю, а не Nan

Смежные вопросы