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
よし,動いた.