Преобразование числа эликсира в записи экспоненты в целое число
Как я могу преобразовать показатель эликсира в целое число?
Я хотел бы преобразовать что-то вроде 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