目次
四則演算
local a = 10
local b = 3
print(a + b) -- 13
print(a - b) -- 7
print(a * b) -- 30
print(a / b) -- 3.3333333333333
+ - * /は、基本的な演算子です。
代入演算子(+=等)やインクリメント(++)やデクリメント(--)は存在しません。
浮動小数点(float)
print(6 / 3) -- 2.0(整数ではなくfloat)
/は、常に浮動小数点(float)を返します。
整数除算(//)
//演算子は、Lua5.3以降の機能です。
local a = 10
local b = 3
print(a // b) -- 3
print(5 // 3) -- 1
print(-5 // 3) -- -2(負数に注意)
//は整数除算(floor division)です。
小数点以下を切り捨てます。
//は正確にはfloor(床関数)です。
-5/3=-1.666...を切り捨てると-1になりそうですが、floorは負の無限大方向への丸めなので-2になります。
余り(%)
local a = 10
local b = 3
print(a % b) -- 1
%は剰余(余り)を求めます。
偶数判定などでよく使います。
local n = 4
if n % 2 == 0 then
print("偶数") -- 偶数
end
べき乗(^)
print(2 ^ 4) -- 16.0
べき乗(^)の結果は常にfloatになります。
浮動小数点の誤差
print(0.1 + 0.2) -- 0.3ではなく 0.3 と表示されるが内部は誤差あり
print(0.1 + 0.2 == 0.3) -- falseと出力される
小数同士の計算では浮動小数点の誤差が発生します。
これは多くの言語(C/JavaScript/Pythonなど)と同じです。
型の確認(type)
local a = 10
print(type(a)) -- number
type()は関数です。
文字列を返します。
整数/浮動小数点の判定
math.typeは、Lua5.3以降の機能です。
local x = 10
if math.type(x) == "integer" then
print("integer") -- integer
end
local y = 3.333
if math.type(y) == "float" then
print("float") -- float
end
math.typeで、整数かどうかを判定できます。
integer(整数)/float(浮動小数点)を区別できます。
文字列→数値変換(tonumber)
local str = "123"
local num = tonumber(str)
print(num + 1) -- 124
tonumberは、string型をnumber型で返します。
変換できない場合はnilを返します。
tonumberの第2引数
tonumberは第2引数で基数(進数)を指定できます。
以下は16進数文字列の変換の例です。
print(tonumber("ff", 16)) -- 255
関連の記事
