Как избежать научной нотации в 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)));
Я бы предложил использовать BigDecimal
s вместо double
s. Таким образом, вы будете иметь более точный контроль над вашей точностью расчета. Также вы можете получить ненаучный 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);