223

Luaで文字列を整数に変換するにはどうすればよいですか?

私はこのような文字列を持っています:

a = "10"

数の10に変換して欲しいのですが。

4

15 に答える 15

350

tonumber関数を使用します。のようにa = tonumber("10")

于 2012-06-09T15:14:21.617 に答える
39

のように算術演算で文字列を使用することにより、暗黙的な変換を強制できますがa= "10" + 0、これは明示的に使用するほど明確でもクリーンでもありませんtonumber

于 2012-06-09T18:52:16.900 に答える
10

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を返します。

于 2014-08-28T15:08:53.543 に答える
10
local a = "10"
print(type(a))
local num = tonumber(a)
print(type(num))

出力

   string                                                                                                                                                                          
   number
于 2015-03-26T16:34:00.510 に答える
6

数値に変換したい文字列が変数にあると言いますS

a=tonumber(S)

数字があり、その中に数字だけが数字Sを返すという条件で、数字ではない文字(浮動小数点数のピリオドを除く)がある場合は、nilを返します。

于 2015-03-12T16:36:26.093 に答える
5

より明確なオプションは、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.
    
于 2016-04-29T18:13:48.167 に答える
5

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

于 2018-07-17T18:05:56.640 に答える
4

tonumber (e [, base])

tonumber2つの引数を取ります。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を考慮して答えました

于 2019-07-03T10:07:26.010 に答える
3

私はHyperpolyglotをチェックすることをお勧めします、素晴らしい比較があります:http: //hyperpolyglot.org/

http://hyperpolyglot.org/more#str-to-num-note

ps。実際、Luaはintではなくdoubleに変換されます。

数値タイプは、実数(倍精度浮動小数点)を表します。

http://www.lua.org/pil/2.3.html

于 2014-11-28T16:19:20.677 に答える
3

「10」をint10として保持するアクセサーを作成できます。

例:

x = tonumber("10")

x変数を出力すると、「10」ではなくint10が出力されます。

Pythonプロセスと同じ

x = int( "10")

ありがとう。

于 2015-07-12T09:19:31.693 に答える
1
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
于 2018-07-01T14:49:26.070 に答える
1

lua 5.3以降math.tointeger、文字列から整数への新しい関数があります。整数の場合、浮動小数点数はありません。

例えば:

print(math.tointeger("10.1")) -- nil
print(math.tointeger("10")) -- 10

整数と浮動小数点数を変換する場合は、tonumber関数の方が適しています。

于 2021-02-03T06:00:40.107 に答える
1

tonumber関数の使用方法と同じように、関数を使用できますtostring。使用方法は次のとおりです。

local x = tonumber("45")
print(x)

結果はになります45

于 2021-08-24T18:06:23.317 に答える
0

これがあなたが置くべきものです

local stringnumber = "10"
local a = tonumber(stringnumber)
print(a + 10)

output:

20
于 2016-12-16T22:41:41.537 に答える
0

Luaデジタル型は倍精度型であり、 luaconfに実装されています。h詳細2つの一般的なオプションがあります。

  1. 【推奨用途】バージョン5.3のLuaスクリプトには、数値と文字列の変換を実現できるメソッドtonumber()とメソッドを含むglobal.luaファイルが含まれています。tostring()
  2. math.tointeger()この方法を使用して数値に変換することもできます。

ただし、実際のシーンに応じて、計算専用の場合は、この操作記号に従ってLuaを変換できます。例えば

  s = "1" + 2; -- lua will convert "1" to 1
  print(s)

  s1 = "e" + 3; -- error
  print(s1)

luaの詳細については、 luaの公式ドキュメントをご覧ください。

お役に立てば幸いです。ご返信をお待ちしております。また、今後ともよろしくお願いいたします。

于 2021-09-21T05:35:45.240 に答える