ভগ্নাংশের সম্ভাব্য ক্ষতি


119

যদি এটি একটি নির্বোধ প্রশ্ন হয় তবে আমাকে ক্ষমা করুন, তবে আমি আজ ক্ষতিতে আছি।

আমার নীচের মতো একটি সাধারণ বিভাগ গণনা রয়েছে:

double returnValue = (myObject.Value / 10);

মান হ'ল অবজেক্টের অন্তর্নিহিত।

আমি একটি বার্তা পাচ্ছি যা এতে ভগ্নাংশের সম্ভাব্য ক্ষতি বলেছে। যাইহোক, আমি যখন ডাবলিকে একটি ইনট এ পরিবর্তন করি তখন বার্তাটি সরে যায়।

কেন এমন হবে তা নিয়ে কোনও চিন্তাভাবনা?


দুর্দান্ত প্রতিক্রিয়া জন্য আপনাকে ধন্যবাদ। এটি এখন বোধগম্য হয় যে 2 ইনট মানগুলি ভাগ করার সময় আপনি দশমিক বিন্দু হারাবেন।
কোডলাইকবিকার

উত্তর:


168

যখন আপনি দুটি ইন্টের এক ভাসমান পয়েন্টের মানকে ভাগ করবেন তখন ভগ্নাংশের অংশটি নষ্ট হয়ে যায়। আপনি যদি কোনও আইটেম ফ্লোটে কাস্ট করেন তবে আপনি এই ত্রুটিটি পাবেন না।

সুতরাং উদাহরণস্বরূপ 10 একটি 10.0 এ রূপান্তর করুন

double returnValue = (myObject.Value / 10.0);

57

myObject.Valueউভয় পক্ষই /পূর্ণসংখ্যার ধরণের হওয়ায় আপনি যদি কোনও পূর্ণসংখ্যা হয় তবে পূর্ণসংখ্যা বিভাগ করছেন ।

ভাসমান-বিন্দু বিভাগ করতে, ভাবের একটি সংখ্যা অবশ্যই ভাসমান-পয়েন্ট টাইপের হতে হবে। এটি সত্য হবে যদি আমারঅবজেক্ট V মূল্য ডাবল বা নীচের যে কোনও একটি ছিল:

double returnValue = myObject.Value / 10.0;
double returnValue = myObject.Value / 10d; //"d" is the double suffix
double returnValue = (double)myObject.Value / 10;
double returnValue = myObject.Value / (double)10;

7

একটি পূর্ণসংখ্যা দ্বারা বিভক্ত একটি পূর্ণসংখ্যা আপনার পূর্ণসংখ্যা ফেরত দেয়। মানকে দ্বিগুণ করুন বা 10.0 দ্বারা ভাগ করুন।


7

myObject.Valueএটি একটি হিসাবে ধরে নিলে intসমীকরণটি myObject.Value / 10পূর্ণসংখ্যা বিভাগ হবে যা তারপরে একটি দ্বিগুণ হয়ে যাবে।

এর অর্থ হ'ল মাইওবজেক্ট.ভ্যালু 12 এর ফলে রিটার্নভ্যালু 1 হবে, 1.2 নয়

আপনাকে প্রথমে মান (গুলি) দিতে হবে:

double returnValue = (double)(myObject.Value) / 10.0;

এটি ডাবল হিসাবে কমপক্ষে যথাযথভাবে তাদের সীমাবদ্ধতা প্রদানের অনুমতি দেবে তবে এটি প্রায় অবিরামভাবে :-)- এ অন্য কোথাও আলোচিত হয়েছে, এটি সঠিক মান 1.2 এর ফলাফল করবে।


4

আমি মনে করি যেহেতু মাইঅবজেক্ট একটি অন্তর্নিহিত, আপনার উচিত

double returnValue=(myObject.Value/10.0); 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.