floating point - MATLAB - floor question -


मैं एक MATLAB शुरुआती हूँ यहां समस्या है:

  & gt; & gt; A = मंजिल (7 / 2.5) a = 2.00 & gt; & gt; बी = रिम (7, 6.2) बी = 2.00 & gt; & gt; सी = मंजिल (बी / 2) सी = 0   

सी 1 होना चाहिए, है ना? यह क्यों है 0 ???

यह अलग है जब b = 2 सीधे इस प्रकार से दर्ज किया जाता है:

  & gt; & gt; बी = 2 बी = 2.00 & gt; & gt; सी = मंजिल (बी / 2) सी = 1.00  

दो शब्दों में: truncation त्रुटियाँ ।

आप सही हैं, सी सही अंकगणित में 1.0 होनी चाहिए। हालांकि, चूंकि आपने रिम के तर्कों में फ्लोट का प्रयोग किया था, आपको जवाब एक फ्लोट के रूप में मिलता है। जाहिर है, बी बिल्कुल 2 नहीं है, लेकिन 2.0, जिसका अर्थ है कि यह 2 से बहुत करीब है। इसलिए, बी / 2 डबल 1.0 हो जाता है, जाहिरा तौर पर इस मामले में इसका मूल्य एक से थोड़ा कम है, आपको 0 देना है पूर्णांक मान यदि आप इसे रोकना चाहते हैं, तो फर्श और सीिल दोनों का उपयोग करें, और मूल्यों की तुलना करें।

यदि आप जवाब को पूर्णांक में परिवर्तित करना चाहते हैं, तो बस फ़र्श के बजाय दौर का उपयोग करें।


Comments

Popular posts from this blog

c++ - Linux and clipboard -

delphi - Mouseover hint for TChart series value -

Visual Studio 2005: How to speed up builds when a VSMDI is open? -