Подтвердить что ты не робот

Как избежать научной нотации в 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("");
        }
    }

});

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

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

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

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

Ответ 5

Использовать NumberFormater, например

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

String result = myformatter.format(yourValue);