當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。