Erlang float_to_binary函数奇怪地截断小数.例如,我希望它转换0.45为没有小数位"0".相反,我们得到(Elixir中的例子):
iex> :erlang.float_to_binary(0.45, [decimals: 0])
"1"
iex> :erlang.float_to_binary(0.445, [decimals: 0])
"1"
> :erlang.float_to_binary(0.444, [decimals: 0])
"0"
Run Code Online (Sandbox Code Playgroud)
因此,似乎从右到左迭代地应用舍入,直到达到所需的小数位数.
这是预期的行为吗?为什么它不正确地圆形或只是截断?对我来说,这两个选项似乎都更容易预测.