सबसे पहले, सुनिश्चित करें कि आप डॉलर और सेंट का प्रतिनिधित्व करने के लिए फ़्लोटिंग पॉइंट नंबर का उपयोग नहीं करते हैं (क्यों अन्य पोस्ट देखें, लेकिन साधारण कारण यह है कि सभी दशमलव संख्याओं को फ्लोट्स के रूप में प्रदर्शित नहीं किया जा सकता है, उदाहरण के लिए, $ 1.79)।
decimal total = 143.13m;
int numberOfEntries = 5;
decimal unadjustedEntryAmount = total/numberOfEntries;
decimal leftoverAmount = total - (unadjustedEntryAmount * numberOfEntries);
int numberOfPenniesToDistribute = leftoverAmount * 100;
int numberOfUnadjustedEntries = numberOfEntries - numberOfPenniesToDistribute;
तो अब आप 28.62 की असमायोजित मात्रा में है, और फिर आप को फैसला करना शेष वितरित करने के लिए कैसे है:
यहाँ यह ऐसा करने का एक ही रास्ता है। आप या तो शीर्ष पर या नीचे से शुरू होने वाले प्रत्येक व्यक्ति को अतिरिक्त पैसा वितरित कर सकते हैं (ऐसा लगता है कि आप नीचे से चाहते हैं)।
for (int i = 0; i < numberOfUnadjustedEntries; i++) {
Console.WriteLine(unadjustedEntryAmount);
}
for (int i = 0; i < numberOfPenniesToDistribute; i++) {
Console.WriteLine(unadjustedEntryAmount + 0.01m);
}
आप संपूर्ण शेष को पहली या अंतिम प्रविष्टियों में भी जोड़ सकते हैं। अंत में, लेखांकन आवश्यकताओं के आधार पर, आप शेष के लिए एक अलग लेनदेन भी बना सकते हैं।
स्रोत
2010-01-11 04:18:21
पूर्णांक विभाजन आप सभी की जरूरत है। आपको पैसे के लिए फ्लोट्स का उपयोग नहीं करना चाहिए। –
क्या आप विस्तृत कर सकते हैं? – Amberite
दशमलव का उपयोग करने के लिए सही प्रकार (फ्लोट से अलग) – justinlatimer