作者:沐月954_290 | 来源:互联网 | 2022-12-10 13:01
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"
因此,似乎从右到左迭代地应用舍入,直到达到所需的小数位数.
这是预期的行为吗?为什么它不正确地圆形或只是截断?对我来说,这两个选项似乎都更容易预测.
1> Dogbert..:
这是Erlang中的一个错误,它于2018年1月15日修复,最初包含在Erlang 20.3中.如果升级到二郎20.3或更高版本,你应该得到"0"
的0.445
.