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

tre*_*rex 1 erlang

我想将list数字转换为a float.它不应该影响它的小数部分.例如.

  "1.000"  --> 1.000
Run Code Online (Sandbox Code Playgroud)

它不应该是1.0.它不应该影响任何其他格式不同的值等"1.23", "8344343.44333330", "34.0",.

list_to_float 不起作用,因为它改变了分数

  1> list_to_float("1.34440").           
  1.3444
Run Code Online (Sandbox Code Playgroud)

aro*_*tav 7

(总结@ raina77ow的评论)

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


rvi*_*ing 5

当你做

1> list_to_float("1.34440").
1.3444
Run Code Online (Sandbox Code Playgroud)

在 shell 中,您会看到两件事:首先是调用list_to_float/1将字符串转换为浮点数;然后外壳以其(外壳的)默认格式打印浮点数。如果要打印具有特定格式的浮点数,最简单的方法是使用该io_lib:format/2函数,该函数可让您控制格式并将结果返回为一个可能是深字符串的结果。这个字符串可以用lists:flatten/1. 有关参数的描述来io_lib:float/2看看文档中这里的的io模块。

该io模块采用io_lib模块内部。