मैं एक संख्या को पर्ल में अपने संख्यात्मक मूल्य में एक स्ट्रिंग को कैसे परिवर्तित करूं?मैं पर्ल में एक स्ट्रिंग को एक नंबर में कैसे परिवर्तित कर सकता हूं?
उत्तर
आप सब पर यह बदलने की आवश्यकता नहीं है:
% perl -e 'print "5.45" + 0.1;'
5.55
पर्ल वास्तव में केवल तीन प्रकार: scalars, सरणियों, और हैश। और यहां तक कि वह भेद बहस योग्य है। ;) प्रत्येक चर के इलाज के तरीके पर निर्भर करता है कि आप इसके साथ क्या करते हैं:
% perl -e "print 5.4 . 3.4;"
5.43.4
% perl -e "print '5.4' + '3.4';"
8.8
पर्ल के मुकाबले कई और प्रकार हैं, लेकिन एकल मानों के लिए, यह सिर्फ एक है एकल मूल्य –
आप 0 –
पर्ल एक संदर्भ-आधारित भाषा है। यह आपके द्वारा दिए गए डेटा के अनुसार अपना काम नहीं करता है। इसके बजाए, यह पता चलता है कि आपके द्वारा उपयोग किए जाने वाले ऑपरेटरों और उस संदर्भ के आधार पर डेटा का इलाज कैसे किया जाए, जिसमें आप उनका उपयोग करते हैं। आप चीजों की संख्या तरह की गतिविधियां करते हैं, तो आप नंबर प्राप्त:
# numeric addition with strings:
my $sum = '5.45' + '0.01'; # 5.46
आप चीजों के तार तरह की गतिविधियां करते हैं, तो आप तार मिलती है:
# string replication with numbers:
my $string = (45/2) x 4; # "22.522.522.522.5"
पर्ल ज्यादातर का पता लगा लेता क्या करना है और यह ज्यादातर सही है। एक ही बात कहने का एक और तरीका यह है कि पर्ल संज्ञाओं के मुकाबले क्रियाओं के बारे में अधिक परवाह करता है।
क्या आप कुछ करने की कोशिश कर रहे हैं और यह काम नहीं कर रहा है?
भी जोड़ सकते हैं यहां ज्ञान की कमी को क्षमा करें लेकिन मुझे आपका दूसरा उदाहरण नहीं मिला है। आप दो संख्याओं को विभाजित कर रहे हैं, फिर उन्हें गुणा कर रहे हैं, यह एक स्ट्रिंग में कैसे/क्यों परिणाम देता है? – gideon
मैं संख्याओं को गुणा नहीं कर रहा हूं। 'X' स्ट्रिंग प्रतिकृति ऑपरेटर है। –
ओह मैं देखता हूं। धन्यवाद! :) पर्ल यकीन है कि बहुत सारे ऑपरेटरों हैं। – gideon
Google एक ही प्रश्न पर पूछते समय मुझे यहां ले जाता है फिल (पूछताछ फ्लोट्स) तो मुझे लगता है कि धागे पुराने होने के बावजूद जवाब पोस्ट करने लायक होगा। मैं पर्ल के लिए नया हूं और अभी भी अपने सिर को चारों ओर लपेट रहा हूं लेकिन ब्रायन डी फोय का बयान "पर्ल ने संज्ञाओं के मुकाबले क्रियाओं के बारे में अधिक परवाह की है।" ऊपर से सिर पर नाखून वास्तव में हिट करता है। इस प्रकार को लागू करने से पहले आपको तारों को फ़्लोट में बदलने की आवश्यकता नहीं है। आपको मूल्यों को संख्याओं के रूप में क्रमबद्ध करने और तारों को क्रमबद्ध करने के लिए सॉर्ट करने की आवश्यकता नहीं है। यानी
my @foo = ('1.2', '3.4', '2.1', '4.6');
my @foo_sort = sort {$a <=> $b} @foo;
तरह
बारे में अधिक जानकारी के लिए http://perldoc.perl.org/functions/sort.html देखें मैं समझता हूँ के रूप में यह int() डेटा प्रकार को निर्दिष्ट यह बस जा रहा है (ab) यहाँ संदर्भ परिभाषित करने के लिए प्रयोग किया जाता है के लिए एक 'डाली' समारोह के रूप में इरादा नहीं है एक अंकगणितीय के रूप में। मैंने (एबी) अतीत में (0 + $ वैल) का उपयोग किया है ताकि यह सुनिश्चित किया जा सके कि $ वैल को एक संख्या के रूप में माना जाता है।
यह एक सरल उपाय है:
उदाहरण 1
my $var1 = "123abc";
print $var1 + 0;
परिणाम
123
उदाहरण 2
my $var2 = "abc123";
print $var2 + 0;
परिणाम
0
AFAIU – Cougar
@ कौगर से पूछा गया यह एकमात्र उत्तर है: मैं सहमत हूं। –
स्ट्रिंग में शून्य जोड़ते समय सावधान रहें। यदि स्ट्रिंग "inf" या "नैन" के साथ शुरू होती है, तो मान शून्य नहीं होगा। ईजी। मेरी $ var2 = "info123"; प्रिंट $ var2 + 0: परिणाम होगा: Inf –
तुलना में यह एक फर्क पड़ता है यदि स्केलर एक स्ट्रिंग की संख्या है। और यह हमेशा निर्णायक नहीं है।मैं एक मामले की रिपोर्ट कर सकते हैं जहां पर्ल "वैज्ञानिक" अंकन में एक नाव लिया गया और प्रयोग किया जाता है कि एक ही एक तुलना में नीचे कुछ पंक्तियां:
use strict;
....
next unless $line =~ /and your result is:\s*(.*)/;
my $val = $1;
if ($val < 0.001) {
print "this is small\n";
}
और यहाँ $val
उदा के लिए संख्यात्मक रूप में व्याख्या नहीं की गई थी "2e-77"
$line
से पुनर्प्राप्त। 0 (या अच्छे ओले सी प्रोग्रामर के लिए 0.0) जोड़ने में मदद मिली।
$var += 0
शायद आप जो चाहते हैं। लेकिन चेतावनी दी, अगर $ वर स्ट्रिंग सांख्यिक में परिवर्तित नहीं किया जा सकता है, तो आपको त्रुटि मिल जाएगा, और $ वर पर रीसेट हो जाएगा:
my $var = 'abc123';
print "var = $var\n";
$var += 0;
print "var = $var\n";
लॉग
var = abc123
Argument "abc123" isn't numeric in addition (+) at test.pl line 7.
var = 0
पर्ल कमजोर टाइप और संदर्भ आधारित है। आपके द्वारा उपयोग किए जाने वाले ऑपरेटरों के आधार पर कई स्केलरों को स्ट्रिंग और संख्या दोनों के रूप में माना जा सकता है। $a = 7*6; $b = 7x6; print "$a $b\n";
आपको 42 777777
मिलते हैं।
हालांकि, एक सूक्ष्म अंतर है। जब आप किसी टेक्स्ट फ़ाइल से डेटा संरचना में संख्यात्मक डेटा पढ़ते हैं, और फिर इसे Data::Dumper
के साथ देखते हैं, तो आप देखेंगे कि आपकी संख्या उद्धृत की गई है। पर्ल उन्हें तारों के रूप में आंतरिक रूप से व्यवहार करता है।
पढ़ें: $my_hash{$1} = $2 if /(.+)=(.+)\n/;
।
डंप: 'foo' => '42'
आप डंप में गैर उद्धृत संख्या चाहते हैं:
पढ़ें: $my_hash{$1} = $2+0 if /(.+)=(.+)\n/;
।
डंप: 'foo' => 42
बाद $2+0
पर्ल देखती है कि आप एक संख्या के रूप में $ 2 का इलाज किया गया है, क्योंकि आप एक अंकीय ऑपरेटर इस्तेमाल किया।
मैंने Data::Dumper
के साथ दो हैंश की तुलना करने की कोशिश करते हुए यह देखा।
- 1. मैं पर्ल में एक स्ट्रिंग को कैसे लपेट सकता हूं?
- 2. मैं एक आईएस 8686 टाइमस्टैम्प को पर्ल में यूनिक्स समय में कैसे परिवर्तित कर सकता हूं?
- 3. मैं एक पूर्णांक को सी में यूनिकोड स्ट्रिंग में कैसे परिवर्तित कर सकता हूं?
- 4. मैं एक स्ट्रिंग को पायथन में एक int में कैसे परिवर्तित कर सकता हूं?
- 5. मैं पर्ल में एक सशर्त प्रतिस्थापन कैसे कर सकता हूं?
- 6. मैं पर्ल में एक इनपुट फ़ाइल को यूटीएफ -8 एन्कोडिंग में कैसे परिवर्तित कर सकता हूं?
- 7. पर्ल में, मैं एक विधि को कैसे कॉल कर सकता हूं जिसका नाम स्ट्रिंग में है?
- 8. मैं सामान्य लिस्प में एक स्ट्रिंग को पूर्णांक में कैसे परिवर्तित कर सकता हूं?
- 9. मैं स्ट्रिंग को mysql में एक फ्लोट में कैसे परिवर्तित कर सकता हूं?
- 10. मैं हेर्ल तारों को पर्ल में संख्याओं में कैसे परिवर्तित कर सकता हूं?
- 11. मैं पर्ल में एक सरणी कैसे छोटा कर सकता हूं?
- 12. मैं पर्ल में एक स्ट्रिंग को पूर्व-आवंटित कैसे कर सकता हूं?
- 13. मैं एक अप्रबंधित IntPtr प्रकार को C# स्ट्रिंग में कैसे परिवर्तित कर सकता हूं?
- 14. मैं एक यूनिकोड पथ को सी स्ट्रिंग में कैसे परिवर्तित कर सकता हूं?
- 15. मैं पर्ल में एक बाइनरी फ़ाइल कैसे बना सकता हूं?
- 16. मैं पर्ल में एक शाब्दिक स्ट्रिंग में परिभाषित फ़ंक्शन नाम कैसे कॉल कर सकता हूं?
- 17. मैं एक चरित्र को पायथन, और उपाध्यक्ष में एक पूर्णांक में कैसे परिवर्तित कर सकता हूं?
- 18. मैं एक digraph को नेटवर्क एक्स में एक अप्रत्यक्ष ग्राफ में कैसे परिवर्तित कर सकता हूं?
- 19. मैं एक स्ट्रिंग को एक अक्षर में एक चरित्र से बचने वाले अनुक्रम को कैसे परिवर्तित कर सकता हूं?
- 20. मैं पर्ल से सी कैसे परिवर्तित कर सकता हूं?
- 21. मैं पर्ल में किसी संख्या को टेक्स्ट में कैसे परिवर्तित कर सकता हूं?
- 22. पर्ल का उपयोग करके 48 हेक्स स्ट्रिंग को बाइट्स में कैसे परिवर्तित कर सकता हूं?
- 23. मैं एक बाइनरी स्ट्रिंग को पर्ल में किसी संख्या में कैसे परिवर्तित करूं?
- 24. एक स्ट्रिंग को एक स्ट्रिंग में कैसे परिवर्तित करें?
- 25. मैं एक स्ट्रिंग को यूटीएफ -8 में एन्कोड किए गए स्ट्रिंग में कैसे परिवर्तित कर सकता हूं और इसके विपरीत?
- 26. मैं विधानसभा को कैसे परिवर्तित कर सकता हूं। CodeBase C# में एक फाइल सिस्टम पथ में?
- 27. मैं एनएसडीएटा को एनएसएआरएआरए में कैसे परिवर्तित कर सकता हूं?
- 28. मैं पर्ल में टाइमस्टैम्प कैसे प्रारूपित कर सकता हूं?
- 29. मैं पर्ल सबराउटिन में दो सरणी और एक स्ट्रिंग कैसे पास कर सकता हूं?
- 30. मैं पर्ल में एक लंबी स्ट्रिंग कैसे उद्धृत कर सकता हूं?
कुछ जवाब भ्रमित हैं क्योंकि प्रश्न संपादित किया गया है। Porquero द्वारा उत्तर प्रश्न के इस संस्करण के लिए सबसे अच्छा है। – TimK
प्रश्न को और विस्तार की आवश्यकता है। स्ट्रिंग केवल अंकों से बना है? अक्षरांकीय? ठीक है अगर जोर छीन लिया जाता है? क्या परिणामस्वरूप संख्या के लिए कोई विशिष्ट उद्देश्य है? – JGurtz