Luaで文字列を整数に変換するにはどうすればよいですか?
私はこのような文字列を持っています:
a = "10"
数の10に変換して欲しいのですが。
tonumber
関数を使用します。のようにa = tonumber("10")
。
のように算術演算で文字列を使用することにより、暗黙的な変換を強制できますがa= "10" + 0
、これは明示的に使用するほど明確でもクリーンでもありませんtonumber
。
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
はfloatを返します。
local a = "10"
print(type(a))
local num = tonumber(a)
print(type(num))
出力
string
number
数値に変換したい文字列が変数にあると言いますS
a=tonumber(S)
数字があり、その中に数字だけが数字S
を返すという条件で、数字ではない文字(浮動小数点数のピリオドを除く)がある場合は、nilを返します。
より明確なオプションは、tonumberを使用することです。
5.3.2以降、この関数は(符号付き)整数、float(ポイントが存在する場合)、および16進数(文字列が「0x」または「0X」で始まる場合は整数とfloatの両方)を自動的に検出します。
次のスニペットは短くなりますが、同等ではありません。
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
tonumber
2つの引数を取ります。1つ目は数値に変換される文字列で、2つ目はのベースですe
。
戻り値tonumber
は10進数です。
提供されていない場合base
は、数値を基数10に変換します。
> a = '101'
> tonumber(a)
101
ベースが指定されている場合は、指定されたベースに変換します。
> 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を考慮して答えました
私はHyperpolyglotをチェックすることをお勧めします、素晴らしい比較があります:http: //hyperpolyglot.org/
http://hyperpolyglot.org/more#str-to-num-note
ps。実際、Luaはintではなくdoubleに変換されます。
数値タイプは、実数(倍精度浮動小数点)を表します。
「10」をint10として保持するアクセサーを作成できます。
例:
x = tonumber("10")
x変数を出力すると、「10」ではなくint10が出力されます。
Pythonプロセスと同じ
x = int( "10")
ありがとう。
Lua 5.3.1 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> math.floor("10");
10
> tonumber("10");
10
> "10" + 0;
10.0
> "10" | 0;
10
lua 5.3以降math.tointeger
、文字列から整数への新しい関数があります。整数の場合、浮動小数点数はありません。
例えば:
print(math.tointeger("10.1")) -- nil
print(math.tointeger("10")) -- 10
整数と浮動小数点数を変換する場合は、tonumber
関数の方が適しています。
tonumber
関数の使用方法と同じように、関数を使用できますtostring
。使用方法は次のとおりです。
local x = tonumber("45")
print(x)
結果はになります45
。
これがあなたが置くべきものです
local stringnumber = "10"
local a = tonumber(stringnumber)
print(a + 10)
output:
20
Luaデジタル型は倍精度型であり、 luaconfに実装されています。h詳細2つの一般的なオプションがあります。
tonumber()
とメソッドを含むglobal.luaファイルが含まれています。tostring()
math.tointeger()
この方法を使用して数値に変換することもできます。ただし、実際のシーンに応じて、計算専用の場合は、この操作記号に従ってLuaを変換できます。例えば
s = "1" + 2; -- lua will convert "1" to 1
print(s)
s1 = "e" + 3; -- error
print(s1)
luaの詳細については、 luaの公式ドキュメントをご覧ください。
お役に立てば幸いです。ご返信をお待ちしております。また、今後ともよろしくお願いいたします。