perl - How do you calculate div and mod of floating point numbers? -


पर्ल में, % ऑपरेटर पूर्णांक मानते हैं उदाहरण के लिए:

  उप foo {my $ n1 = shift; मेरी $ n2 = शिफ्ट; प्रिंट "पर्ल के मॉड =" $ N1% $ n2, "\ n"; मेरे $ res = $ n1 / $ n2; मेरा $ t = int ($ res); प्रिंट करें "मेरी div = $ t", "\ n"; $ Res = $ res - $ t; $ Res = $ res * $ n2; प्रिंट "मेरे मॉड =" $ Res "\ N \ n"; } फ़ू (3044.952963, 7.1); फू (3044.952963, -7.1); फू (-3044.952963, 7.1); फू (-3044.952963, -7.1);  

देता

  perl के mod = 6 मेरे div = 428 मेरे mod = 6.15296300000033 perl के mod = -1 मेरे div = -428 मेरे mod = 6.15296300000033 perl mod = 1 मेरे div = -428 मेरे mod = -6.15296300000033 perl के mod = -6 मेरे div = 428 मेरे mod = -6.15296300000033  

अब आप देख सकते हैं, मैं एक के साथ आया हूँ div और mod की गणना के लिए पहले से ही "समाधान" हालांकि, जो मुझे समझ में नहीं आता है, परिणामस्वरूप प्रत्येक तर्क के संकेत को प्रभावित करना चाहिए। क्या div हमेशा की तरह सकारात्मक हो, बार की संख्या होने पर n2 में फिट हो n1 ? इस स्थिति में अंकगणित कैसे काम करना चाहिए?

दिए गए a = qd + r , d के नकारात्मक मूल्यों के लिए शेष की गणना करते समय एक अस्पष्टता है

उदाहरण:

अभिव्यक्ति -42 ÷ -5 , या तो के रूप में व्यक्त किया जा सकता है: -42 = 9 × (-5) + 3 या -42 = 8 × (-5) + (-2)

तो बाकी तो या तो 3 या -2 है

अधिक जानकारी के लिए:

इसके अलावा, मॉड / डिव में नकारात्मक संख्या के मामले में आउटपुट सॉफ्टवेयर भाषाओं में निर्भर है। देखें (दाईं ओर तालिका को देखें)


Comments