루아 문자열을 int로
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
부동 소수점 인 경우 여전히 부동 소수점을 반환합니다 number
.
local a = "10"
print(type(a))
local num = tonumber(a)
print(type(num))
산출
string
number
숫자로 바꾸려는 문자열이 변수에 있다고 말합니다. S
a=tonumber(S)
숫자가 있고 숫자 만 있으면 숫자를 S
반환하지만 숫자가 아닌 문자가 있으면 (float의 마침표 제외) 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.
접근자를 "10"을 int 10으로 유지하도록 할 수 있습니다.
예:
x = tonumber("10")
x 변수를 인쇄하면 "10"이 아닌 int 10이 출력됩니다.
파이썬 프로세스와 동일
x = int ( "10")
감사.
Hyperpolyglot을 확인하는 것이 좋습니다. http://hyperpolyglot.org/
http://hyperpolyglot.org/more#str-to-num-note
추신. 실제로 Lua는 int가 아닌 double로 변환됩니다.
숫자 유형은 실수 (배정 밀도 부동 소수점) 숫자를 나타냅니다.
http://www.lua.org/pil/2.3.html
주목해야한다 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
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
tonumber
두 개의 인수를 취합니다. 첫 번째는 문자열이고 숫자는 두 번째입니다 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을 고려하여 대답했다.
여기에 넣어야 할 것이 있습니다
local stringnumber = "10"
local a = tonumber(stringnumber)
print(a + 10)
output:
20
참고 URL : https://stackoverflow.com/questions/10962085/lua-string-to-int
'IT story' 카테고리의 다른 글
흥미로운 반복 템플릿 패턴 (CRTP)은 무엇입니까? (0) | 2020.05.26 |
---|---|
파이썬 쉘에서 화살표 키를 누를 때 이스케이프 문자보기 (0) | 2020.05.26 |
아약스 요청에 대해 "파서 오류"를 반환하는 jQuery (0) | 2020.05.26 |
X 서버를 실행하지 않고 matplotlib 그래프 생성 (0) | 2020.05.26 |
새 폴더를 만드는 방법? (0) | 2020.05.26 |