我想将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
答案 0 :(得分:7)
(@ raina77ow总结评论)
浮动1.0
和1.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
模块。