Lua에서 문자열을 정수로 변환하려면 어떻게해야합니까?
다음과 같은 문자열이 있습니다.
a = "10"
숫자 10으로 변환하고 싶습니다.
답변
tonumber
기능을 사용하십시오 . 에서처럼 a = tonumber("10")
.
답변
에서와 같이 산술 연산에서 문자열을 사용하여 암시 적 변환을 강제 할 수 a= "10" + 0
있지만 이는 tonumber
명시 적 으로 사용하는 것만 큼 명확하지 않거나 깨끗하지 않습니다 .
답변
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
부동 소수점 인 경우 여전히 부동 소수점을 반환합니다 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.
답변
주목해야한다 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