将指数表示法中的Elixir数转换为整数

Lin*_*eid 8 elixir

如何将Elixir指数转换为整数?

我想转换的东西一样1.0e2100.我已经搜索了一个解决方案,但一直找不到.

Pat*_*ity 7

你所谓的指数实际上只是用科学记数法写的浮点数,有时也称为指数表示法.实际的指数实际上只是整个事物的一部分.它与尾数一起使我们可以方便地表示非常大和/或小的数字:

mantissa * (10 ^ exponent)
Run Code Online (Sandbox Code Playgroud)

所以在Elixir中,和许多其他语言一样,这个数字1.23 * (10 ^ 5)可以写成1.23e5.如果您键入您的例子数1.0e2iex,你会看到,它实际上只是对浮点数顶部的便利:

iex> 1.0e2
100.0
Run Code Online (Sandbox Code Playgroud)

所以问题应该是:"如何将浮点数转换为整数?".答案是,您可以使用以下功能之一来实现此目的:

  • 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
Run Code Online (Sandbox Code Playgroud)