Почему 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.