【发布时间】:2018-03-15 18:17:36
【问题描述】:
默认情况下,Elixir 对大于 1000 的浮点数使用科学记数法。这会在 json 序列化过程中产生不良副作用。
iex(5)> val = 1000.00
1.0e3
iex(11)> Poison.encode(val)
{:ok, "1.0e3"}
我想要的输出是
iex(11)> Poison.encode(val)
{:ok, "1000.00"}
我见过this answer 使用:erlang.float_to_binary(0.005 * 2.7 / 100, [:compact, {:decimals, 10}]) 或:io.format("~f~n",[0.005 * 2.7 / 100]),但这需要修补Poison 或在编码之前手动检查所有数据。
有没有一种更简洁的方法可以在 elixir 中强制将默认浮点数转换为二进制格式?
【问题讨论】:
-
Poison(或任何其他序列化程序)应该如何知道您希望留下多少尾随零?
-
这不是关于尾随零,而是关于科学记数法
1000.0而不是1.0e3。而问题是如何定义我想要的格式?
标签: json elixir elixir-poison