我需要进行一些计算,但是我遇到的问题是非常低的值,例如,我需要得到0.005的2.7%而我最终得到1.3500000000000003e-4这不是我的意思我正在寻找,我只需要知道如何获得这些值的准确感知,我现在正在做的是<value> * 2.7 / 100
,它对于大于0.05的整数或浮点数非常有用。
例如,我需要的那个是0.005%的0.005,需要显示为0.000135。
答案 0 :(得分:7)
首先,要明白语言是否被打破,只是computers are just really bad at doing floating point math。
所以,在某种意义上,1.3500000000000003e-4
是准确的,但你的问题是Elixir以指数表示法打印(非常小和非常大)的浮点数。您可以通过以下几种方式将其打印为0.000135
:
使用Erlang&#39; 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
这是一个很好的Elixir包装器,围绕Erlang&#39; :io
模块
请注意,结果是一个字符串,而不是上面示例中的数字 - 因为您只是以十进制格式化/打印它。