আমি ডাবল পেতে কীভাবে দুটি পূর্ণসংখ্যা ভাগ করতে পারি?


282

দ্বিগুণ হওয়ার জন্য আমি কীভাবে দুটি পূর্ণসংখ্যা ভাগ করব?


10
ধরে নিলাম এটি একটি সাক্ষাত্কারে জিজ্ঞাসা করা হয়েছিল - পূর্ণসংখ্যা বিভাগ সর্বদা পূর্ণসংখ্যার ফলাফল করে। নীচের চিত্রের মতো আপনার অবশ্যই টাইপ কাস্ট ব্যবহার করা উচিত।
সেশে

2
বিভিন্ন ধরণের বিভাগ: পূর্ণসংখ্যা, ভাসমান-বিন্দু, দশমিক-বিবিধ আলোচনা কেন সি # তে পূর্ণসংখ্যা বিভাগ একটি পূর্ণসংখ্যা ফেরত দেয় তবে একটি ভাসা নয়?
মাইকেল ফ্রেইজিম

উত্তর:


460

আপনি সংখ্যাটি কাস্ট করতে চান:

double num3 = (double)num1/(double)num2;

দ্রষ্টব্য: সি # তে যে কোনও যুক্তি যদি doublea doubleহয় তবে একটি বিভাজন ব্যবহৃত হয় যার ফলশ্রুতি a double। সুতরাং, নিম্নলিখিতগুলিও কাজ করবে:

double num3 = (double)num1/num2;

আরও তথ্যের জন্য দেখুন:

ডট নেট পার্লস


3
এটি সি # তে একই কিনা তা জানেন না, তবে সি এর জন্য কেবল আপনাকে প্রথম কাস্ট করা প্রয়োজন - এটি স্বয়ংক্রিয়ভাবে ডাবল / ইন্টি ডাবল করে দেবে।
প্যাক্সডিয়াবলো

4
@ প্যাক্স, সি বা সি # এর যে কোনও আরোগুলি একটি ডাবল হলে ডাবল বিভাজন ব্যবহৃত হয় (ফলে ডাবল হয়)।
স্টারগার

32
এটি যাতে না হয় সে সম্পর্কে সতর্কতা অবলম্বন করুন: - double num3 = (double)(num1/num2);। এটি আপনাকে কেবল পূর্ণসংখ্যা বিভাগের ফলাফলের দ্বিগুণ উপস্থাপনা দেবে!
একাকী কোডার

মনে করুন আপনার অতিরিক্ত নির্ভুলতার প্রয়োজন নেই, এর doubleপরিবর্তে কাস্ট করার কোনও কারণ আছে float? আমি প্রশ্নগুলির জন্য কলগুলি দেখতে পাচ্ছি doubleতবে যাইহোক আমি আগ্রহী।
কাইল

@ কাইলডেলানিকে সি # তে কেবল কারণ হিসাবে আমরা সাধারণত ব্যবহার করি doubleএবং না float। আপনি যখন ঠিক একটি ভেরিয়েবল লিখেন var a = 1.0;, এই 1.0 সর্বদা একটি double। আমার ধারণা এটিই মূল কারণ।
নিজেই

31

@ নোহড এর উত্তর পরিপূরক করা

বৃহত্তর নির্ভুলতা পেতে আপনি দশকে কাস্ট করতে পারেন:

(decimal)100/863
//0.1158748551564310544611819235

বা:

Decimal.Divide(100, 863)
//0.1158748551564310544611819235

ডাবলগুলি 64 বিট বরাদ্দ করা হয় যখন দশমিক 128 ব্যবহার করে

(double)100/863
//0.11587485515643106

"নির্ভুলতা" এর গভীরতার ব্যাখ্যা

বাইনারি মধ্যে ফ্লোটিং পয়েন্ট উপস্থাপনা এবং তার স্পষ্টতা সম্পর্কে আরো জানার জন্য কটাক্ষপাত করা এই প্রবন্ধের জন স্কিট থেকে যেখানে তিনি কথা বলেছেন floatsএবং doublesএবং এই এক যেখানে তিনি কথা বলেছেন decimals


2
ভুল! double53 বিটগুলির যথার্থতা রয়েছে এবং এটি একটি বাইনারি ভাসমান-বিন্দু বিন্যাস, যেখানে decimalএকটি 96 দশমিক যথাযথতা সহ দশমিক এক অবশ্যই রয়েছে । সুতরাং double15 ডলার দশমিক সংখ্যা এবং দশমিক 28-29 সংখ্যা (এবং এর দ্বিগুণ নয় double) prec আরও গুরুত্বপূর্ণ decimalবিষয়টি হল 128 বিটের মধ্যে কেবলমাত্র 102 টি ব্যবহার করে
6

ধন্যবাদ @ ফুকলভ, এটি ঠিক করে দিয়েছেন। আমার অর্থ ছিল "স্থান বরাদ্দ"। আপনি এর স্পষ্টতা সম্পর্কে সঠিক ছিল decimals(96), কিন্তু doublesআছে অংশক এর 52 বিট না 53
fabriciorissetto

1
হ্যাঁ, ম্যান্টিসার ৫২ টি বিট রয়েছে তবে এখনও একটি গোপন বিট রয়েছে যার ফলস্বরূপ 53-বিটের তাত্পর্য রয়েছে। এটি কি ভাসমান পয়েন্ট যথার্থতার 52 বা 53 বিট?
ফুকলিভ

ডেসিমাল। ডিভাইড দুর্দান্ত ছিল! থেক্স
রিকার্ডো জি সরাইভা

10

পূর্ণসংখ্যার দ্বিগুণ করতে।


সুনির্দিষ্টভাবে বলতে গেলে, আপনি এর মতো একটি ডাবলটির জন্য একটি পূর্ণসংখ্যার কাস্ট করতে পারেন: (ডাবল) মাইআইঞ্জারভ্যালু
হুইপল্যাশ

5

এর মধ্যে একটিকে প্রথমে ডাবল রূপান্তর করুন। এই ফর্মটি বিভিন্ন ভাষায় কাজ করে:

 real_result = (int_numerator + 0.0) / int_denominator

1
কেবলমাত্র করা সহজ ...var result = 1.0 * a / b;
বেসিক

@ বেসিক এটি করার 100 টি উপায় আছে। কাস্টিং স্পষ্টতই দ্রুত হলেও যদিও এটি দ্রুত হয় তাই আমি সংযোজনটি পছন্দ করি।
মার্ক রান্সম

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