意外にも標準関数がなかったのでゴリゴリ実装してみました。
実装といっても、
引数:数値型(小数可)
返り値:3桁カンマ区切りの文字列
というだけの簡単な関数なのですが。
(賢い人ならワンライナーで書けそう)
関数
local function numberToCurrency(num)
local str1 = tostring(num)
-- 小数点以下の抽出
local str2 = ""
local match_s = string.find(str1, ".", 1, true)
if match_s ~= nil then
str2 = string.sub(str1, match_s)
str1 = string.sub(str1, 1, match_s - 1)
end
-- 整数部分を後ろから3桁ずつ取り出して","で繋ぐ
local i = 1
str1 = string.reverse(str1)
while (i <= string.len(str1)) do
str2 = "," .. string.reverse(string.sub(str1, i, i + 2)) .. str2
i = i + 3
end
-- 先頭に余分な","がついているので2文字目以降を返す
return string.sub(str2, 2)
end
実行結果
print(numberToCurrency(123456.789))
> 123,456.789
※大きすぎる数値(e+18等で表示される奴)は非対応です。そのまま表示されます。
コメント