Я ищу способ динамического форматирования числа с плавающей запятой в стандартном десятичном формате или в научной нотации, в зависимости от значения числа.
- Для умеренных величин число должно бытьотформатирован как десятичная дробь с подавленными конечными нулями.Если число с плавающей запятой равно целочисленному значению, десятичная точка также должна быть подавлена.
- Для экстремальных величин (очень малых или очень больших) это число должно быть выражено в научных обозначениях.С другой стороны, если число символов в выражении в виде стандартной десятичной записи превышает определенный порог, переключитесь на научную запись.
- У меня должен быть контроль над максимальным количеством цифр точности,но я не хочу, чтобы конечные нули добавлялись для выражения точности минимум ;все конечные нули должны быть подавлены.
По существу, он должен оптимизироваться для компактности и читабельности .
2.80000
-> 2.8
765.000000
-> 765
0.0073943162953
-> 0.00739432
(ограничить цифры точности - в данном случае до 6)
0.0000073943162953
-> 7.39432E-6
(переключитесь на научное обозначение, если величина достаточно мала - в данном случае меньше 1E-5
)
7394316295300000
-> 7.39432E+6
(переключитесь на научное обозначение, если значение достаточно велико - например,когда больше чем 1E+10
)
0.0000073900000000
-> 7.39E-6
(убрать нули с нуля по значению в научной записи)
0.000007299998344
-> 7.3E-6
(округление от 6-digit предел точности заставляет это число иметь конечные нули, которые убираются)
Вот что я нашел до сих пор:
- Метод
.toString()
числакласс делает большую часть того, что я хочу, за исключением того, что он не преобразуется в целочисленное представление, когда это возможно, и он не будет выражать большие целочисленные значения.отношения в научной нотации.Кроме того, я не уверен, как отрегулировать точность. - Строка формата
"%G"
для функции String.format(...)
позволяет мне выражать числа в научной записи с регулируемой точностью, но не обрезаетконечные нули .
Мне интересно, есть ли уже какая-то библиотечная функция, которая отвечает этим критериям.Я полагаю, что единственным камнем преткновения для написания этого самому является то, что необходимо убрать завершающие нули из значения и в научной записи, созданной %G
.