Luaで文字列を整数に変換するにはどうすればよいですか?
私はこのような文字列を持っています:
a = "10"
数字の10に換算してほしい。
Luaで文字列を整数に変換するにはどうすればよいですか?
私はこのような文字列を持っています:
a = "10"
数字の10に換算してほしい。
回答:
tonumber
関数を使用します。のようにa = tonumber("10")
。
local a = "10"
print(type(a))
local num = tonumber(a)
print(type(num))
出力
string
number
Luaのすべての数値は浮動小数点数です(編集: Lua 5.2以下)。本当に「int」に変換したい(または少なくともこの動作を複製したい)場合は、次のようにできます。
local function ToInteger(number)
return math.floor(tonumber(number) or error("Could not cast '" .. tostring(number) .. "' to number.'"))
end
その場合、文字列(または実際には何でも)を明示的に数値に変換し、Javaで(int)キャストが行うように数値を切り捨てます。
編集:これはまだLuaの5.3で動作し、でも、Luaの5.3のように、実際の整数値を持っていると思ったmath.floor()
ようなオペレータに対し戻っ整数、number // 1
場合まだfloatを返しますnumber
フロートです。
数値にしたい文字列が変数にあると言います S
a=tonumber(S)
数字があり、数字だけが数字S
を返すことを条件としますが、数字ではない文字がある場合(浮動小数のピリオドを除く)、nilを返します
より明確なオプションはtonumberを使用することです。
5.3.2以降、この関数は(符号付き)整数、浮動小数点(点が存在する場合)および16進数(整数と浮動小数点の両方、文字列が「0x」または「0X」で始まる場合)を自動的に検出します。
次のスニペットは短くなっていますが、同等ではありません。
a + 0 -- forces the conversion into float, due to how + works.
a | 0 -- (| is the bitwise or) forces the conversion into integer.
-- However, unlike `math.tointeger`, it errors if it fails.
はmath.floor()
常に切り捨てられるため、負の浮動小数点値に対して適切な結果が得られないことに注意してください。
たとえば、整数として表される-10.4は通常、切り捨てられるか、-10に丸められます。しかし、math.floor()の結果は同じではありません。
math.floor(-10.4) => -11
型変換による切り捨ての場合、次のヘルパー関数が機能します。
function tointeger( x )
num = tonumber( x )
return num < 0 and math.ceil( num ) or math.floor( num )
end
参照:http : //lua.2524044.n2.nabble.com/5-3-Converting-a-floating-point-number-to-integer-td7664081.html
アクセサを作成して、「10」をint 10として保持できます。
例:
x = tonumber("10")
x変数を出力すると、「10」ではなく、int 10が出力されます。
Pythonプロセスと同じ
x = int( "10")
ありがとう。
私はHyperpolyglotをチェックすることをお勧めします、素晴らしい比較があります:http : //hyperpolyglot.org/
http://hyperpolyglot.org/more#str-to-num-note
ps。実際には、Luaはintではなくdoubleに変換されます。
数値型は、実数(倍精度浮動小数点)数を表します。
tonumber
2つの引数を取ります。1つは数値に変換される文字列で、2つ目はの基数ですe
。
戻り値tonumber
は10を底としています。
指定しない場合base
は、数値を10進数に変換します。
> a = '101'
> tonumber(a)
101
baseが指定されている場合は、指定されたbaseに変換します。
> a = '101'
>
> tonumber(a, 2)
5
> tonumber(a, 8)
65
> tonumber(a, 10)
101
> tonumber(a, 16)
257
>
e
無効な文字が含まれている場合はを返しますnil
。
> --[[ Failed because base 2 numbers consist (0 and 1) --]]
> a = '112'
> tonumber(a, 2)
nil
>
> --[[ similar to above one, this failed because --]]
> --[[ base 8 consist (0 - 7) --]]
> --[[ base 10 consist (0 - 9) --]]
> a = 'AB'
> tonumber(a, 8)
nil
> tonumber(a, 10)
nil
> tonumber(a, 16)
171
Lua5.3を考慮して答えました
ここにあなたが置くべきものがあります
local stringnumber = "10"
local a = tonumber(stringnumber)
print(a + 10)
output:
20