Double = NaN如何使AlertDialog显示0,00

时间:2016-02-09 14:04:46

标签: android

我有一些双我的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();

感谢您将来的任何答案

1 个答案:

答案 0 :(得分:1)

您可以像这样检查Double的NaN值:

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

这确保了double值为零而不是Nan