首先,要了解语言没有被破坏,只是计算机在进行浮点数学时非常糟糕.
因此,从某种意义上讲,这1.3500000000000003e-4是准确的,但你的问题是Elixir以指数表示法打印(非常小和非常大)的浮点数.您可以通过以下几种方式将其打印为0.000135:
使用Erlang float_to_binary:
:erlang.float_to_binary(0.005 * 2.7 / 100, [:compact, {:decimals, 10}])
#=> "0.000135"
Run Code Online (Sandbox Code Playgroud)用途:io.format:
:io.format("~f~n",[0.005 * 2.7 / 100])
#=> "0.000135"
Run Code Online (Sandbox Code Playgroud)或者exprintf在Erlang的:io模块周围使用它是一个很好的Elixir包装器
请注意,结果是一个字符串,而不是上面示例中的数字 - 因为您只是以十进制格式化/打印它.