में खो जाता है नाव कास्ट करने के लिए int करने के लिए कोशिश कर रहा है लेकिन वहाँ कुछ कमीफ्लोट मूल्य इंट
float submittedAmount = 0.51f;
int amount = (int)(submittedAmount * 100);
जवाब 50 क्यों है? जब आप लिखना 0.51f
नहीं है
में खो जाता है नाव कास्ट करने के लिए int करने के लिए कोशिश कर रहा है लेकिन वहाँ कुछ कमीफ्लोट मूल्य इंट
float submittedAmount = 0.51f;
int amount = (int)(submittedAmount * 100);
जवाब 50 क्यों है? जब आप लिखना 0.51f
नहीं है
int amount = (int)(submittedAmount * 100.0);
साथ प्रयास करें बिल्कुल 0.51
इस महान What Every Computer Scientist Should Know About Floating-Point Arithmetic
100 से 100.0 सहायता कैसे बदलेंगे? क्या आपने इस लेख को पढ़ा है? ;) –
बुलाया लेख पढ़ें, बढ़ी मूल्य नहीं बिल्कुल 51 है। जब मैंने अभी कोशिश की, * 0.51 एफ * 100 * परिणाम 50.9 99 9990463257 दिया।
और जब तुम और पूर्णांक के लिए 50.9999990463257 पार्स, तो आप निश्चित रूप से मिलता है।
यदि आप इस तरह की गणना सटीक मानना चाहते हैं, तो आपको float
के बजाय decimal
जैसे प्रकार का उपयोग करना होगा।
यदि आप समझना चाहते हैं, तो मैंने नीचे दिए गए लेख को क्यों पढ़ा है।
What Every Computer Scientist Should Know About Floating-Point Arithmetic
उपयोग वर्ग में रूपांतरित करें। अन्यथा जवाब अभी भी हो जाएगा 50.
var amount = Convert.ToInt32(submittedAmount * 100.0));
0.51f
वास्तव में 0.509999999999
है। क्योंकि फ्लोटिंग पॉइंट अपरिचित हैं।
मैं इसे जोड़ना चाहता हूं, मौद्रिक गणना के लिए float
का उपयोग न करें। इसके बजाय decimal
का उपयोग करें।
इससे मदद मिल सकती है: http://stackoverflow.com/questions/8911440/strange-behavior-when-casting-a-float-to-int-in-c-sharp –
आपको फ्लोट पर गोल करने की आवश्यकता हो सकती है एक int को कास्टिंग करने से पहले। – Quetzalcoatl