我需要进行一些计算,但是我遇到一个值非常低的问题,例如,我需要得到0.005的2.7%,最终得到1.3500000000000003e-4,这不是我想要的值,我只需要知道如何获得这些值的准确百分比,我现在正在做的<value> * 2.7 / 100对整数或大于0.05的浮点数都有效。

例如,我需要的是0.005的2.7%,需要显示为0.000135。

最佳答案

首先,要了解语言没有中断,只是computers are just really bad at doing floating point math

因此,从某种意义上来说1.3500000000000003e-4是准确的,但是您的问题是Elixir以指数表示法打印(非常小和非常大)浮点数。您可以通过几种方法将其打印为0.000135:

  • 使用Erlang的float_to_binary:
    :erlang.float_to_binary(0.005 * 2.7 / 100, [:compact, {:decimals, 10}])
    #=> "0.000135"
    
  • 使用:io.format:
    :io.format("~f~n",[0.005 * 2.7 / 100])
    #=> "0.000135"
    
  • 或使用 exprintf ,它是Erlang的:io模块
  • 的一个不错的Elixir包装器


    请注意,在上面的示例中,结果是字符串而不是数字-因为您只是将其格式化/打印为十进制。

    10-06 06:27