列表浮动erlang而不影响小数部分

时间:2014-09-09 06:51:05

标签: erlang

我想将list号码转换为float。它不应该影响它的小数部分。 例如。

  "1.000"  --> 1.000

不应该是1.0。同时它不应该影响具有不同格式的任何其他值,如"1.23", "8344343.44333330", "34.0",等。

list_to_float不适用于此,因为它会更改分数

  1> list_to_float("1.34440").           
  1.3444

2 个答案:

答案 0 :(得分:7)

(@ raina77ow总结评论)

浮动1.01.00对应于相同的编号,因此它们不能(也不应该)以保留不同表示的方式存储。如果需要保留用户给出的原始表示,则需要将此字段存储为列表(字符串),并在需要浮点值时转换为浮点数。

答案 1 :(得分:4)

当你这样做时

1> list_to_float("1.34440").
1.3444

在shell中你看到两个的东西:首先调用list_to_float/1将字符串转换为浮点数;然后shell以其(shell)的默认格式打印浮动。如果你想打印具有特定格式的浮点数,最简单的方法是使用io_lib:format/2函数,它可以控制格式并将结果作为一个可能很深的字符串返回。此字符串可以使用lists:flatten/1展平。有关io_lib:float/2参数的说明,请参阅io模块的文档here

io模块在​​内部使用io_lib模块。