list_to_floatで整数文字列をfloat型に変換する

ファイルを読み込んで計算させたい場合にどんな数字でもfloat型に変換する必要に迫られた.しかし,文字列を小数に変換する際に用いるlist_to_float/1を使って"321"のような整数文字列を321.0に変換することができない.どうやらこれは一貫性を保つための仕様のようである.

うーむ,これは使いづらい.DIYするしかないのかなぁ.

というわけで文字列に.が含まれていれば小数,そうでなければ整数と判断をして,末尾に".0"を追記することによってlist_to_floatで小数に変換するコードを書いてみた.Erlangでは文字列は文字のリストなので,appendを使って追記できる


かなり適当.

-module(hoge).
-compile(export_all).

mylist_to_float(X) ->
    case is_float_str(X) of
        true -> list_to_float(X);
        false -> list_to_float(lists:append(X, ".0"))
    end.

is_float_str ([]) -> false;
is_float_str ([$.|_T]) ->
    true;
is_float_str ([_H|T]) ->
    is_float_str(T).


動作確認

1> hoge:mylist_to_float("464.9").
464.9
2> hoge:mylist_to_float("4649").
4649.0

よし,動いた.