2016-03-16 17 views
5

मैं जानना चाहता हूं कि लूआ tostring() फ़ंक्शन का उपयोग करके रूपांतरणों को स्ट्रिंग करने के लिए संख्या को कैसे संभालता है।लुआ - स्ट्रिंग व्यवहार की संख्या

यदि संख्या गोल है तो यह एक int (स्ट्रिंग के रूप में) में परिवर्तित करने जा रहा है (यानी number == (int) number) या क्या यह हमेशा 10.0 जैसे वास्तविक (स्ट्रिंग के रूप में) आउटपुट करने जा रहा है?

मुझे लूआ सी 0 एपीआई का उपयोग किए बिना लूआ के tostring के सटीक व्यवहार की नकल करने की आवश्यकता है, इस मामले में, मैं lua_State का उपयोग नहीं कर रहा हूं।

+0

यह लुआ संस्करण पर निर्भर करता है। –

उत्तर

10

लुआ 5.2 में या उससे पहले, स्ट्रिंग "10" के रूप में दोनों tostring(10) और tostring(10.0) परिणाम।

लुआ 5.3 में, यह बदल गया है:

print(tostring(10)) -- "10" 
print(tostring(10.0)) -- "10.0" 

क्योंकि लुआ 5.3 पूर्णांक उप प्रकार पेश किया है यही कारण है कि। Changes in the Language से:

एक स्ट्रिंग के लिए एक नाव के रूपांतरण अब एक .0 प्रत्यय परिणाम के लिए कहते हैं, तो यह एक पूर्णांक तरह दिखता है। (उदाहरण के लिए, 2.0 फ्लोट 2.0 के रूप में मुद्रित किया जाएगा, 2 के रूप में नहीं।) आपको हमेशा एक स्पष्ट प्रारूप का उपयोग करना चाहिए जब आपको संख्याओं के लिए एक विशिष्ट प्रारूप की आवश्यकता हो।

+0

आपकी मदद के लिए धन्यवाद। तो यह अपेक्षा की तरह आसान नहीं है। मैं 5.3.2 का उपयोग कर रहा हूं और दूसरे संस्करण का उपयोग करने की योजना नहीं बना रहा हूं। – Virus721

2

लुआ संख्याओं प्रकार है: http://www.lua.org/cgi-bin/demo यह लुआ 5.3.1

उपयोग करता है:

print(tostring(10)) => "10" 
print(tostring(10.0)) => "10.0" 
print(tostring(10.1)) => "10.1" 

आप उनके साथ चारों ओर खेलने के लिए चाहते हैं, तो इस तरह सरल आदेश के लिए एक छोटा सा ऑनलाइन पार्सर है संपादित करें मुझे एगोर की टिप्पणी का समर्थन करना चाहिए, यह संस्करण निर्भर है। मैं इस स्थानीय रूप से अपने सिस्टम पर चलता था:

Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio 
> print(tostring(10)) 
10 
> print(tostring(10.0)) 
10 
+0

धन्यवाद मैं इसे आजमाउंगा। क्या लुआ के टॉस्ट्रिंग फ़ंक्शन के बारे में कोई आधिकारिक दस्तावेज़ीकरण नहीं है? मैं खोज कर रहा हूं लेकिन जानकारी वास्तव में स्पैस है और जब भी आप जानकारी का एक टुकड़ा चाहते हैं तो आपको पूरी किताब को पढ़ना होगा ... – Virus721

+0

जो मुझे मिल सकता है वह http://www.lua.org/pil/2.4.html था और http://www.lua.org/manual/5.1/manual.html#lua_tostring –

+0

ठीक है जैसा कि मुझे संदेह है, यदि संख्या == (int) संख्या है, तो यह एक int प्रिंट करता है। मैं निराश नहीं हो सकता कि इन बुनियादी कार्यों का कोई आधिकारिक दस्तावेज नहीं है। फिर भी सहायता के लिए धन्यवाद। – Virus721

0

लुआ 5.3 में, एक नाव पर पूर्णांक प्रकार, tostring (हालांकि यह है सांख्यिक मान एक पूर्णांक के बराबर हो सकता है) एक "'.0' प्रत्यय जोड़ देगा, लेकिन इसका मतलब यह नहीं है कि आप इसे छोटा नहीं कर सकते हैं की वजह से !

local str = tostring(n) 
if str:sub(-2) == ".0" then 
    str = str:sub(1,-3) 
end 
1

आप 5.3.4 का उपयोग कर रहे हैं और आप एक त्वरित हॉटफिक्स की जरूरत है, math.floor का उपयोग करें - यह एक पूर्णांक-संख्या के लिए यह डाले। यह दक्षता में @ warspyking जवाब धड़कता है, लेकिन उस शीतलता की कमी है जो कोड के बंच हैं।

>tostring(math.floor(54.0)) 
54 
>tostring(54.0) 
54.0 
संबंधित मुद्दे