#java #java-8 #double #scientific-notation
#java #java-8 #double #научная нотация
Вопрос:
Как я могу изменить научную нотацию double в Java, но сохранить тип данных? Я знаю о DecimalFormat
и я не хочу выводить значение для вывода. Я хочу передать его по конвейеру как double, а не в научной нотации. Например, я хочу 2000000000000
как double, а не в форме 2.0E12
. Каждое решение, которое я нашел до сих пор, преобразует его либо в длинную, либо в большую десятичную дробь, либо в строку. Возможно ли сохранить его как double?
Комментарии:
1. Что вы подразумеваете под » передачей его по конвейеру «? Пока стоимость «проживания» в Java bitpattern будет стиль такой же(
1000.0
такая же, как10e2
же, как1e3
же, как1000e0
). Научная нотация — это всего лишь формат (де) сериализации.2. @Turing85 В конце конвейера он отправляется на HTML-страницу и отображается как научная нотация. У меня нет доступа к этой части конвейера, поэтому я не могу его там изменить. Я хочу изменить его, когда он будет сгенерирован вместо этого.
3. Тогда вы не сможете сохранить его как
double
. Сторона, которая десериализует значение, определяет формат.4. Нет. Битовый шаблон
double
остается неизменным. Процесс десериализацииdouble
(т.Е. преобразованиеdouble
вString
) изменяет его.5. Итак, вы пытаетесь решить проблему, за которую не несете ответственности. Тот, кто преобразует
double
в строку HTML, отвечает за формат вывода.
Ответ №1:
double
не кодирует никакой информации о форматировании, только значение. Форматированием по умолчанию управляет Double.toString или код, который вставляет значения в HTML-страницу, может использовать средство форматирования.
Один из вариантов — заменить ваш double
класс-оболочку экземпляром, который содержит double
поле, но имеет метод toString, который выполняет то, что вы хотите. Чтобы выполнить арифметические действия, обратитесь к double
полю. Конвейер HTML-страницы, обнаружив ссылочную переменную, которая не является одним из стандартных классов, скорее всего, вызовет ее toString для форматирования значения.
Комментарии:
1. Если вы можете передать произвольный объект в конвейер HMTL, например, предлагаемую оболочку, вы также можете передать ему форматированную строку.