#python #scientific-notation
#python #научная нотация
Вопрос:
Под моим вопросом я подразумеваю, что у меня есть несколько чисел в диапазоне от 0.6e9
до 3.6e9
. Я уже использую f"foo {number:.1E} bar"
для достижения научного форматирования при печати / отображении f-строк, однако возникает проблема, которая 0.6e9
«сокращается» до 6.0e8
, что не то, что я хочу.
Я понимаю, что технически это правильный ответ, но для целей отображения и удобства чтения я считаю, что было бы лучше использовать его как 0.6e9
, чтобы соответствовать другим.
Чтобы было понятно, чего я хочу, это контролировать мощность 10, используемую в научном форматировании.
Это то, чем можно легко управлять, или для этого потребуется пользовательская функция?
Комментарии:
1. Где именно? Отметки, метку, некоторую строку формата вы передаете в matplotlib? Пожалуйста, приведите минимальный пример того, где вы хотите, чтобы это произошло, предпочтительно, если это график, график с некоторыми числами в качестве короткого примера.
2. Пожалуйста, приложите некоторый код, чтобы можно было найти лучшее решение, связанное с вашей программой.
3. @kabanus где угодно. Форматирование выполняется стандартной нотацией форматирования Python независимо от того, где она будет использоваться. Даже простая
print()
строка. (например, введитеprint(f"{10000:.1e}")
в консоль python.) В моем конкретном случае я использовал это вlabel
аргументеpyplot
графика, но это всего лишь f-строка.4. Я внес изменения в ваш вопрос, чтобы прояснить это — упоминание matplotlib является отвлекающим маневром, поскольку у него есть собственный набор форматирования.
Ответ №1:
Поскольку вы упомянули, что это всего лишь f-строка, в вашем конкретном примере, где диапазон ограничен, этого может быть достаточно для получения соответствующей строки формата:
f'{number/1e9:.1f}e9'
Комментарии:
1. Умно! Я настроил его в соответствии со своими потребностями в метке matplotlib plot label, поскольку
fr"{number/1e9:.1f}$times 10^9$"
это дает мне именно то, на что я надеялся, спасибо!2. @ch4rl 1e97 С тексом еще лучше!