मेरे पास 3 बहुत बड़े हस्ताक्षरित पूर्णांक हैं।
long x = long.MaxValue;
long y = long.MaxValue - 1;
long z = long.MaxValue - 2;
मैं उनकी छंटनी औसत की गणना करना चाहता हूं। अपेक्षित औसत मूल्य है long.MaxValue - 1, जो है 9223372036854775806।
इसकी गणना करना असंभव है:
long avg = (x + y + z) / 3; // 3074457345618258600
नोट: मैंने उन सभी प्रश्नों को औसतन 2 संख्याओं के बारे में पढ़ा है, लेकिन मैं यह नहीं देखता कि उस तकनीक को 3 संख्याओं के औसत पर कैसे लागू किया जा सकता है।
के उपयोग के साथ यह बहुत आसान होगा BigInteger, लेकिन मान लें कि मैं इसका उपयोग नहीं कर सकता।
BigInteger bx = new BigInteger(x);
BigInteger by = new BigInteger(y);
BigInteger bz = new BigInteger(z);
BigInteger bavg = (bx + by + bz) / 3; // 9223372036854775806
यदि मैं double, तो, निश्चित रूप से, मैं सटीकता खो देता हूं:
double dx = x;
double dy = y;
double dz = z;
double davg = (dx + dy + dz) / 3; // 9223372036854780000
यदि मैं इसमें रूपांतरित होता हूं decimal, तो यह काम करता है, लेकिन यह भी मान लें कि मैं इसका उपयोग नहीं कर सकता।
decimal mx = x;
decimal my = y;
decimal mz = z;
decimal mavg = (mx + my + mz) / 3; // 9223372036854775806
प्रश्न: क्या केवल एक longप्रकार के उपयोग से 3 बहुत बड़े पूर्णांकों की छंटनी औसत की गणना करने का एक तरीका है ? उस प्रश्न को C # -स्पेशल मत समझिए, बस मेरे लिए C # में नमूने उपलब्ध कराना आसान है।
long.MinValueऔर long.MaxValueमूल्यों के बीच में काम नहीं करेगा ।
BigIntegerया decimalइसे बाहर रखा गया है, या यह सिर्फ इस कठिन बनाने के लिए है?