Я хочу представить число с плавающей запятой в виде строки, округленной до некоторого количества значащих цифр, и никогда не использовать экспоненциальный формат. По сути, я хочу отобразить любой номер с плавающей запятой и убедиться, что он "выглядит хорошо".
Есть несколько частей этой проблемы:
- Мне нужно указать количество значащих цифр.
- Число значимых цифр должен быть переменным, что не может быть с помощью форматирование строки оператор. [edit] Я исправлен; оператор форматирования строк может это сделать.
- Мне нужно, чтобы он округлился так, как человек ожидал бы, а не что-то например 1.999999999999
Я выяснил один из способов сделать это, хотя это выглядит как рабочий раунд, и это не совсем идеально. (Максимальная точность - 15 значащих цифр.)
>>> def f(number, sigfig):
return ("%.15f" % (round(number, int(-1 * floor(log10(number)) + (sigfig - 1))))).rstrip("0").rstrip(".")
>>> print f(0.1, 1)
0.1
>>> print f(0.0000000000368568, 2)
0.000000000037
>>> print f(756867, 3)
757000
Есть ли лучший способ сделать это? Почему у Python нет встроенной функции?