मेरे पास 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
इसे बाहर रखा गया है, या यह सिर्फ इस कठिन बनाने के लिए है?