मैं Lua में स्ट्रिंग को पूर्णांक में कैसे बदल सकता हूं?
मेरे पास एक स्ट्रिंग है जैसे:
a = "10"
मैं चाहूंगा कि इसे 10 में बदल दिया जाए, संख्या।
मैं Lua में स्ट्रिंग को पूर्णांक में कैसे बदल सकता हूं?
मेरे पास एक स्ट्रिंग है जैसे:
a = "10"
मैं चाहूंगा कि इसे 10 में बदल दिया जाए, संख्या।
जवाबों:
tonumber
फ़ंक्शन का उपयोग करें । के रूप में a = tonumber("10")
।
आप अंकगणित के संचालन में एक स्ट्रिंग का उपयोग करके एक अंतर्निहित रूपांतरण को बाध्य कर सकते हैं a= "10" + 0
, लेकिन यह स्पष्ट रूप से उपयोग करने के रूप में या के रूप में साफ नहीं है tonumber
।
tonumber
बजाय उपयोग करने के लिए सभी अधिक कारण हैं , हालांकि!)
+
हमेशा स्पष्ट रूप से इसके अतिरिक्त है, ..
- संगति।
local a = "10"
print(type(a))
local num = tonumber(a)
print(type(num))
उत्पादन
string
number
Lua में सभी नंबर फ़्लोट हैं ( संपादित करें: Lua 5.2 या उससे कम)। यदि आप वास्तव में "इंट" में बदलना चाहते हैं (या कम से कम इस व्यवहार को दोहराते हैं), तो आप यह कर सकते हैं:
local function ToInteger(number)
return math.floor(tonumber(number) or error("Could not cast '" .. tostring(number) .. "' to number.'"))
end
जिस स्थिति में आप स्पष्ट रूप से एक संख्या में स्ट्रिंग (या वास्तव में, जो कुछ भी है) को परिवर्तित करते हैं, और फिर जावा में एक (इंट) डाली की तरह संख्या को काटते हैं।
संपादित करें: यह अभी भी Lua 5.3 में काम करता है, यहां तक कि सोचा कि Lua 5.3 में पूर्णांक के रूप में वास्तविक math.floor()
पूर्णांक हैं, जबकि एक ऑपरेटर जैसे कि number // 1
अभी भी एक फ्लोट होगा तो एक फ्लोट लौटेगा number
।
स्ट्रिंग जिसे आप संख्या में बदलना चाहते हैं, वह चर में है S
a=tonumber(S)
बशर्ते कि संख्याएँ हों और इसमें केवल संख्याएँ ही S
एक संख्या लौटाएंगी, लेकिन यदि कोई वर्ण हैं जो संख्याएँ नहीं हैं (फ़्लोट के लिए अवधि को छोड़कर) तो यह शून्य हो जाएगा
टोनर का उपयोग करने के लिए स्पष्ट विकल्प है ।
5.3.2 तक, यह फ़ंक्शन स्वचालित रूप से पूर्णांक का पता लगाएगा (हस्ताक्षरित), फ्लोट (यदि एक बिंदु मौजूद है) और हेक्साडेसिमल (दोनों पूर्णांक और फ्लोट, यदि स्ट्रिंग "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" को इंट 10 के रूप में रखने के लिए एक सहायक बना सकते हैं।
उदाहरण:
x = tonumber("10")
यदि आप x चर को प्रिंट करते हैं, तो यह एक इंट 10 का उत्पादन करेगा और "10" नहीं
पायथन प्रक्रिया की तरह
x = int ("10")
धन्यवाद।
मैं हाइपरपॉलीग्लॉट की जाँच करने के लिए फिर से तैयार करूँगा, एक भयानक तुलना है: http://hyperpolyglot.org/
http://hyperpolyglot.org/more#str-to-num-note
ps। दरअसल लुआ डबल्स में नहीं बल्कि डबल्स में परिवर्तित हो जाता है।
संख्या प्रकार वास्तविक (डबल-सटीक फ़्लोटिंग-पॉइंट) संख्याओं का प्रतिनिधित्व करता है।
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 पर विचार करते हुए उत्तर दिया
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
यहाँ आप को क्या करना चाहिए
local stringnumber = "10"
local a = tonumber(stringnumber)
print(a + 10)
output:
20