当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Elixir Float.round用法及代码示例


Elixir语言中 Float.round 相关用法介绍如下。

用法:

round(float, precision \\ 0)
@spec round(float(), precision_range()) :: float()

将浮点值四舍五入为任意数量的小数位数(0 到 15 之间)。

舍入方向始终与半向上相关。该操作在二进制浮点上执行,无需转换为十进制。

这个函数只接受浮点数并且总是返回一个浮点数。如果您想要一个同时接受浮点数和整数并始终返回整数的函数,请使用 Kernel.round/1

已知的问题

round/2 用于浮点数的行为可能令人惊讶。例如:

iex> Float.round(5.5675, 3)
5.567

人们可能预计它会向上取整至 5.568 的一半。这不是错误。大多数小数不能表示为二进制浮点数,因此上述数字在内部表示为 5.567499999,这解释了上述行为。如果要对小数进行精确舍入,则必须使用十进制库。上述行为也符合参考实现,例如 David M. Gay 的“Correctly Rounded Binary-Decimal and Decimal-Binary Conversions”。

例子

iex> Float.round(12.5)
13.0
iex> Float.round(5.5674, 3)
5.567
iex> Float.round(5.5675, 3)
5.567
iex> Float.round(-5.5674, 3)
-5.567
iex> Float.round(-5.5675)
-6.0
iex> Float.round(12.341444444444441, 15)
12.341444444444441

相关用法


注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Float.round(float, precision \\ 0)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。