Почему Java преобразует двойную в экспоненциальную форму

У меня проблема. На моей странице JSP у меня есть текстовое поле, которое принимает денежную стоимость. Когда я ввожу значение, такое как 66777764 это становится 6.6777764E7 в моем текстовом поле всякий раз, когда есть ошибка проверки. Я знаю, что это не повлияет на значение, сохраненное в базе данных, но я думаю, что оно вводит в заблуждение / сбивает с толку пользователя. Пожалуйста помоги. Заранее спасибо.

3 ответа

Кажется, вы держите свой номер как double так 66777764 на самом деле 66.777764.0 и он показывает, что вы получили.

Вы можете использовать DecimalFormat для форматирования отображения числа по своему желанию, например:

double d = 1.234567;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d)); // will print 1.23

Это покажет номер с 2 цифрами после точки (66777764.00), есть много вариантов формата, проверьте документацию для информации.

Следовать BigDecimal

BigDecimal bd = new BigDecimal(inputVal);
System.out.println(bd);

Используйте BigDecimal, чтобы сохранить денежную стоимость.

double d = 66777764d;
BigDecimal bd = new BigDecimal(d);
System.out.println(bd);

Прочитайте ответ на этот вопрос, чтобы узнать, почему вы должны использовать BigDecimal.

Другие вопросы по тегам