Преобразование числа эликсира в записи экспоненты в целое число

Как я могу преобразовать показатель эликсира в целое число?

Я хотел бы преобразовать что-то вроде 1.0e2 в 100, Я искал решение, но не смог его найти.

1 ответ

Решение

То, что вы называете экспонентой, на самом деле является просто числом с плавающей запятой, написанным в научной нотации, иногда также называемой экспоненциальной нотацией. Фактический показатель на самом деле является лишь частью всей этой вещи. Вместе с мантиссой это позволяет нам удобно представлять очень большие и / или маленькие числа:

mantissa * (10 ^ exponent)

Так что в эликсире, как и во многих других языках, число 1.23 * (10 ^ 5) можно записать как 1.23e5, Если вы наберете номер вашего примера 1.0e2 в iexвы увидите, что это действительно просто удобство поверх чисел с плавающей запятой:

iex> 1.0e2
100.0

Таким образом, вопрос должен быть: "Как преобразовать число с плавающей точкой в ​​целое число?". Ответ заключается в том, что вы можете использовать одну из следующих функций для достижения этой цели:

  • Kernel.round/1 - круглый
  • Kernel.trunc/1 - пропустить цифры после десятичной точки
  • Float.round/2 - круг с точностью
  • Float.floor/2 - округлить с точностью
  • Float.ceil/2 - округлить с точностью

Kernel функции разрешены в защитных тестах, и вам не нужно ставить Kernel. впереди, чтобы позвонить им. Float Функции дополнительно позволяют указать точность, чтобы сохранить некоторые цифры после десятичной точки. С вашим примером не имеет значения, какой вы используете, потому что 100.0 это целое число. Поведение функций, упомянутых выше, однако, лучше всего иллюстрировать с помощью другого числа, скажем, 1.55:

iex> round(1.55)
2

iex> trunc(1.55)
1

iex> Float.round(1.55)
2.0

iex> Float.round(1.55, 1)
1.6

iex> Float.floor(1.55)
1.0

iex> Float.floor(1.55, 1)
1.5

iex> Float.ceil(1.55)
2.0

iex> Float.ceil(1.55, 1)
1.6
Другие вопросы по тегам