मैं पर्ल में NaN या अनंत मानों के लिए कैसे बना या परीक्षण कर सकता हूं?मैं पर्ल में NaN या अनंतता के लिए कैसे बना या परीक्षण कर सकता हूं?
उत्तर
यहाँ एक काफी विश्वसनीय तरीका है:
my $inf = 9**9**9;
my $neginf = -9**9**9;
my $nan = -sin(9**9**9);
sub isinf { $_[0]==9**9**9 || $_[0]==-9**9**9 }
sub isnan { ! defined($_[0] <=> 9**9**9) }
# useful for detecting negative zero
sub signbit { substr(sprintf('%g', $_[0]), 0, 1) eq '-' }
for my $num ($inf, $neginf, $nan) {
printf("%s:\tisinf: %d,\tisnan: %d,\tsignbit: %d\n", $num, isinf($num), isnan($num), signbit($num));
}
आउटपुट है:
inf: isinf: 1, isnan: 0, signbit: 0
-inf: isinf: 1, isnan: 0, signbit: 1
nan: isinf: 0, isnan: 1, signbit: 0
print "Is NaN\n" if $a eq 'nan';
print "Is Inf\n" if $a eq 'inf' or $a eq '-inf';
संपादित: नकारात्मक अनन्तता के लिए फिक्स्ड।
जो इस जवाब को वोट देता है, अगर आपको शर्मिंदा न हो तो आप पोस्ट छोड़ दें। इस तरह perl में बिल्कुल सही काम करता है। यदि स्ट्रिंग प्रस्तुति की तुलना में $ a संख्या है तो नैन या इंफ मान होने पर केवल 'नैन' या 'inf' होगा। –
क्या होगा यदि $ कोई संख्या नहीं है, लेकिन वास्तव में स्ट्रिंग "नैन" है? –
@ रयान: स्ट्रिंग "नैन" पाठ्यक्रम की संख्या नहीं है। ysth का समाधान बिल्कुल वही काम करता है। 'Perl -le 'उप isnan {की जांच करें! परिभाषित ($ _ [0] <=> 9 ** 9 ** 9)}; प्रिंट इस्नान ("नान") '' अगर आप मुझ पर भरोसा नहीं करते हैं। –
व्यक्तिगत रूप से, मैं कुछ भी है कि NaN
के अनंत को छूने के लिए जा रहा है के लिए Math::BigFloat
(या BigInt
) का प्रयोग करेंगे।
नौकरी करने वाले पहले से ही मॉड्यूल होने पर एक हैक समाधान के साथ पहिया को फिर से क्यों शुरू करें?
संक्षिप्त उत्तर जो निम्न कार्य करता है।
1:
{no strict 'subs'; $NAN="NAN"+1;}
2: उत्पादन के लिए एक "नेन" चर (printf करने के लिए, उदाहरण के लिए) बनाने के लिए कैसे कैसे "नेन" के लिए परीक्षण करने के लिए (ASCII आर्ट की तरह दिखता है):
sub isnan {!($_[0]<=0||$_[0]>=0)}
3:
{$INF="INF"+1; $INFN=-"INF"+1}
4: एक "INF" और INFN चर बनाने का कैसे कैसे "INF" (कोई भी संकेत के) के लिए परीक्षण करने के लिए:
sub isinf {($_[0]==+"INF")||($_[0]==-"INF")}
(1) और (3) सिर्फ '$ NAN =" NAN "+1;', '$ INF =" INF "+1 से अलग नहीं हैं; $ INFN = - "आईएनएफ"; 'और अधिक verbose – ysth
ओह, मैं देखता हूं (4) केवल सख्त अक्षम किए बिना, केवल पासवर्ड का उपयोग करता है। और ये सभी जो "एनएएन" और "आईएनएफ" जैसे तारों पर भरोसा करते हैं, संख्यात्मक संदर्भ में उचित "संख्या" बनने से पुराने बीआरएल पर असफल हो जाएगा या जहां सी रनटाइम इसका समर्थन नहीं करता है (उदाहरण के लिए स्ट्रॉबेरी पर्ल या विंडोज़ पर सक्रियपर) – ysth
एक _comprehensive_ उत्तर में एक परीक्षण शामिल होगा। – dolmen
CPAN से उपयोग Data::Float। यह निम्नलिखित कार्यों का निर्यात करता है:
float_is_infinite(
)float_is_nan()
- ...
और विपरीत दूसरों आधा काम कर समाधान यहां पोस्ट की गई, यह एक testsuite है।
यह उल्लेख किया जाना चाहिए कि 'NaN' के लिए डेटा :: फ्लोट की जांच मंच पर' NaN' समर्थन पर निर्भर है। –
जब मैं मैं इस साइट (यहाँ) और http://www.learning-perl.com/2015/05/perls-special-not-a-numbers/
मिला जुड़ा हुआ लेख बताते हैं कि "नेन" == "नेन" कभी नहीं सच है, अंतर्निहित ग कार्यान्वयन NaN का समर्थन करता है जब क्योंकि नेन ही मेल नहीं खा सकता है की खोज ।
यह अच्छी तरह से
die "This perl does not support NaN!\n" if "NaN" == "NaN";
से दिखाया गया है मैं ऐसा माहौल पर्ल शान से अपमानित किया गया है में आप कोड रुक जाने का जोखिम लगता है और अपने कोड काफी कम इतना है कि आप बहुत ज्यादा चिंता मत करो नहीं हो सकता है ।
और हां अगर आप पर्ल एक संख्या के रूप अंतर्वेशन नहीं करना चाहते, 'eq' नहीं '=='
- 1. मैं पर्ल क्लास कैसे बना सकता हूं?
- 2. मैं पर्ल में यूनिट परीक्षण कैसे कर सकता हूं?
- 3. मैं 1000 फाइलें कैसे बना सकता हूं जिनका उपयोग मैं स्क्रिप्ट का परीक्षण करने के लिए कर सकता हूं?
- 4. मैं पर्ल में एक बाइनरी फ़ाइल कैसे बना सकता हूं?
- 5. मैं पर्ल में ज़िप संग्रह कैसे बना सकता हूं?
- 6. मैं पर्ल में 2 डी सरणी कैसे बना सकता हूं?
- 7. मैं सी कोड में पर्ल हैश कैसे बना सकता हूं?
- 8. मैं पर्ल में सापेक्ष/अनुमानित तिथियां कैसे बना सकता हूं?
- 9. मैं पर्ल में कॉलम आउटपुट कैसे बना सकता हूं?
- 10. मैं रीशेपर के साथ एनयूनीट परीक्षण कैसे बना सकता हूं?
- 11. मैं पर्ल में हैश का हैश कैसे बना सकता हूं?
- 12. मैं और या अभिव्यक्ति कैसे बना सकता हूं?
- 13. मैं clojure.java.jdbc से डेटाबेस कैसे छोड़ूं या बना सकता हूं?
- 14. पर्ल का उपयोग करके, मैं वेब पर उन% -encodings को डीकोड या कैसे बना सकता हूं?
- 15. मैं हैश के लिए पैथोलॉजिकल कुंजी कैसे बना सकता हूं?
- 16. क्या मैं पर्ल में जावा जैसी इंटरफेस बना सकता हूं?
- 17. सी # के लिए एक कार्टूनिज़र कहां मिल सकता है, या मैं कैसे बना सकता हूं?
- 18. मैं कैसे निर्धारित कर सकता हूं कि पर्ल फ़ंक्शन रनटाइम पर मौजूद है या नहीं?
- 19. मैं पर्ल में एक सरणी कैसे छोटा कर सकता हूं?
- 20. मैं पर्ल या पायथन में केवल हर तीसरी अनुक्रमणिका कैसे मुद्रित कर सकता हूं?
- 21. मैं नकारात्मक शून्य के लिए कैसे परीक्षण कर सकता हूं?
- 22. मैं रिमोट फाइल कैसे बना सकता हूं?
- 23. मैं अपने पर्ल सीजीआई प्रोग्राम को कैसे बना सकता हूं?
- 24. मैं पर्ल से पीडीएफ टेबल कैसे बना सकता हूं?
- 25. मैं पर्ल से एक्सएमएल कैसे बना सकता हूं?
- 26. मैं पर्ल में 64-बिट अंकगणित कैसे कर सकता हूं?
- 27. मैं पर्ल में सेट का प्रतिनिधित्व कैसे कर सकता हूं?
- 28. मैं कैसे परीक्षण कर सकता हूं: RSpec
- 29. मैं जीसी परीक्षण कैसे कर सकता हूं?
- 30. मैं पर्ल में यूनिक्स grep कैसे कार्यान्वित कर सकता हूं?
5.10 और ऊपर है, जहां सी पुस्तकालय इसका समर्थन करता है, बस 0+ "नेन" का उपयोग की , 0+ "inf", या 0 + "- inf" भी काम करते हैं। – ysth
आप का बहुत ऊर्जावान: 13 मिनट पहले, आप सवाल पूछते हैं; 11 मिनट पहले, आप इसका उत्तर देते हैं; 9 मिनट पहले, आप एक टिप्पणी पोस्ट करते हैं। आपको खुद को एक बियर या कुछ खरीदना चाहिए। – Telemachus
@Telemachus: सिवाय इसके कि मैं सामान नहीं पीता ... – ysth