Как избежать научной нотации в Double?

вот мой простой код

        @Override
    public void onClick(View v) {
        try {
            double price = Double.parseDouble(ePrice.getText().toString());
            double percent = Double.parseDouble(ePercent.getText().toString());

            double priceValue = price * percent/100.0f;
            double percentValue = price - priceValue;

            moneyToGet.setText(String.valueOf(priceValue));
            moneyToPay.setText(String.valueOf(percentValue));

            moneyToGet.setText("" + priceValue);
            moneyToPay.setText("" + percentValue);

            // catch
        } catch (NumberFormatException ex) {
            // write a message to users
            moneyToGet.setText("");
        }
    }

});

Это простой код для процентного калькулятора.

Я хочу избежать Научная Нотация в моем калькуляторе, потому что я не хочу объяснять пользователю, что такое научная нотация.

если я хочу, чтобы вычислить 100,000,000 и порезал 50% этого, он должен дать мне 50,000,000 это дает мне 5.0E7 и в моем случае это не имеет никакого смысла для пользователя. И конечно, я знаю, что оба результата верны. Спасибо заранее.

5 ответов


Проверить ответ здесь. Вы можете написать

moneyToGet.setText(String.format("%.0f", priceValue));

вы можете попробовать этот DecimalFormat

DecimalFormat decimalFormatter = new DecimalFormat("############");
number.setText(decimalFormatter.format(Double.parseDouble(result)));

Я бы предложил использовать BigDecimals вместо doubles. Таким образом, вы будете иметь более точный контроль над вашей точностью расчета. Также вы можете получить ненаучный String используя BigDecimal.toPlainString().


DecimalFormat decimalFormatter = new DecimalFormat("##.############");
                    decimalFormatter.setMinimumFractionDigits(2);
                    decimalFormatter.setMaximumFractionDigits(15);

эта опция поможет вам ##.## суффикс 0 перед десятичным, иначе вывод будет .000

 btc.setText(decimalFormatter.format(btcval));

используйте это для отображения содержимого


используйте NumberFormater как

NumberFormat myformatter = new DecimalFormat("########");  

String result = myformatter.format(yourValue);