বিভাগের জন্য যখন ব্যবহার করা হয় তখন '/' এবং '//' এর মধ্যে পার্থক্য কী?


473

একে অপরকে ব্যবহার করে কী লাভ? পাইথন 2-এ, তারা উভয়ই একই ফলাফল ফেরত দেবে বলে মনে হচ্ছে:

>>> 6/3
2
>>> 6//3
2

1
অপারেটরটিকে পূর্ণসংখ্যা বিভাগ করতে পরিচয় করানোর কারণ হিসাবে দয়া করে পূর্ণসংখ্যা বিভাগের সাথে সমস্যাটি দেখুন//
শ্রীরাম

উত্তর:


649

পাইথন 3.x এ, 5 / 2ফিরে আসবে 2.5এবং 5 // 2ফিরে আসবে 2। পূর্ববর্তীটি হ'ল ভাসমান পয়েন্ট বিভাগ এবং দ্বিতীয়টি হ'ল মেঝে বিভাগ , কখনও কখনও এটি পূর্ণসংখ্যা বিভাগও বলে

পাইথন ২.২ বা তারপরে ২.x লাইনে, পূর্ণসংখ্যার জন্য কোনও পার্থক্য নেই যদি না আপনি একটি সম্পাদনা করেন from __future__ import division, যার ফলে পাইথন ২.x 3.x আচরণ অবলম্বন করে।

ভবিষ্যতের আমদানি নির্বিশেষে, 5.0 // 2ফিরে আসবে 2.0যেহেতু এটি অপারেশনের মেঝে বিভাগের ফলাফল।

আপনি https://docs.python.org/whatsnew/2.2.html#pep-238- পরিবর্তন- the- বিভাজন- অপারেটর এ একটি বিস্তারিত বিবরণ পেতে পারেন


সম্পাদিত: পাইথন ২.২ থেকে আপনি বিভাগ "ঠিক" করতে পারেন! (কেবল লিঙ্কযুক্ত পিইপি পড়ুন)
u0b34a0f6ae

2
এছাড়াও python -Qnew। অন্যান্য বিভাগের বিকল্পগুলি: -Qold(ডিফল্ট) -Qwarn,,-Qwarnall
জন লা রুই

2
ওয়ার্থ যে ইশারা 5.0 / 2আয় 2.5সব সংস্করণে, আছে যেমন 5 / 2.0- পুরাতন আচরণ শুধুমাত্র বিভিন্ন যখন উভয় operands হয় int
ক্রিস

2
সংখ্যাগুলি নেতিবাচক হলে কী হবে? আচরণটি কি নেতিবাচক পূর্ণসংখ্যার জন্য একই?
অ্যারন ফ্র্যাঙ্ক

1
@ শ্রীনিবাসু আপনার উদাহরণটি সহায়ক নয়। আরও ভাল হবে 5 // 2 (যা 2 দেয়) এবং -5 // 2 (যা ফল দেয় -3)।
মার্ভিন

67

পাইথন ২.২ স্পষ্টকরণ:

পাইথন ২.x রেখার জন্য স্পষ্ট করে বলা, /এটি তল বিভাগ বা সত্য বিভাগ নয়। বর্তমান গৃহীত উত্তরটি এ সম্পর্কে পরিষ্কার নয়।

/মেঝে বিভাজন যখন উভয় args হয় int, কিন্তু সত্য বিভাজন যখন পারেন অথবা উভয় args হয় float

উপরেরটি আরও সত্য বলে, এবং গৃহীত উত্তরের ২ য় অনুচ্ছেদের চেয়ে আরও স্পষ্ট।


33

//আপনার ধরণের নির্বিশেষে "তল বিভাগ" প্রয়োগ করে। তাই 1.0/2.0দেব 0.5, তবে দুটো একসাথে 1/2, 1//2এবং 1.0//2.0দেব 0

দেখুন https://docs.python.org/whatsnew/2.2.html#pep-238-changing-the-division-operator বিস্তারিত জানার জন্য


এটি একটি ভাল উত্তর। পিইপি লিঙ্কটি সহায়ক। এছাড়াও, ব্যবহার করার বিষয়ে বিবেচনা করুন math.floor()বা math.fmod()যদি আপনি নিশ্চিত না হন যে ইউনারি অপারেটরগুলির সাথে কী চলছে।
স্কট লোরে

/এবং //দ্বি-নারি অপারেটরগুলি (দুটি অপারেশন, বাম এবং ডান, সংখ্যক এবং ডিনোমিনেটর)
আয়নো

28

/ -> ভাসমান পয়েন্ট বিভাগ

// -> তল বিভাগ

পাইথন ২.7 এবং পাইথন ২.৩ উভয় ক্ষেত্রে কয়েকটি উদাহরণ দেখতে দিন।

পাইথন 2.7.10 বনাম পাইথন 3.5

print (2/3)  ----> 0                   Python 2.7
print (2/3)  ----> 0.6666666666666666  Python 3.5

পাইথন 2.7.10 বনাম পাইথন 3.5

  print (4/2)  ----> 2         Python 2.7
  print (4/2)  ----> 2.0       Python 3.5

এখন আপনি পাইথন ৩.৫ এর মতো (পাইথন ২.7 তে) একই আউটপুট পেতে চাইলে আপনি নিম্নলিখিতগুলি করতে পারেন:

পাইথন 2.7.10

from __future__ import division
print (2/3)  ----> 0.6666666666666666   #Python 2.7
print (4/2)  ----> 2.0                  #Python 2.7

যেখানে পাইথন ২.7 এবং পাইথন ৩.৫ উভয় ক্ষেত্রে তল বিভাগের মধ্যে কোনও পার্থক্য নেই

138.93//3 ---> 46.0        #Python 2.7
138.93//3 ---> 46.0        #Python 3.5
4//3      ---> 1           #Python 2.7
4//3      ---> 1           #Python 3.5

এটি কি ইন্টার (5/2) এর মতো?
পাইরেট অ্যাপ

সংখ্যাগুলি নেতিবাচক হলে কী হবে? আচরণটি কি নেতিবাচক পূর্ণসংখ্যার জন্য একই?
অ্যারন ফ্র্যাঙ্ক

1
লিখেছেন: ঋণাত্মক সম্মাননা - আচরণ, একই, কিন্তু তাই rounding সর্বদা মনে রাখবেন যে ফলাফলের মেঝে হয় নিচে প্রতি আরো নেতিবাচক । কয়েকটি উদাহরণ: -100 // 33=> -4 ; 100 // -33=> -4 ; তবে মেঝে ফানকের বৃত্তাকার দিকের কারণে, পরবর্তীটির তুলনায় পূর্বেরটি -100 // -33= : > 3 এর তুলনায় স্বতঃসিদ্ধ মনে হতে পারে ।
এরদস-বেকন

22

সবাই ইতিমধ্যে উত্তর হিসাবে, //মেঝে বিভাগ।

কেন এটি গুরুত্বপূর্ণ তা //হ'ল পাইথন ৩.x সংস্করণ সহ ২.২ থেকে সমস্ত পাইথন সংস্করণে নির্বিঘ্নে মেঝে বিভাগ।

এর /উপর নির্ভর করে আচরণের পরিবর্তন হতে পারে:

  • সক্রিয় __future__আমদানি করুন বা না (মডিউল-স্থানীয়)
  • পাইথন কমান্ড লাইন বিকল্প, হয় -Q oldবা-Q new


5

পাইথন ২.7 এবং পাইথনের অন্যান্য আসন্ন সংস্করণ:

  • বিভাগ ( /)

ডান হাত অপারেন্ড দ্বারা বাম হাত অপারেন্ড ভাগ করে

উদাহরণ: 4 / 2 = 2

  • মেঝে বিভাগ ( //)

অপারেটরগুলির বিভাজন যেখানে ফলাফলটি ভাগফল যেখানে দশমিক বিন্দুর পরে অঙ্কগুলি সরানো হয়। তবে যদি কোনও অপারেশন নেতিবাচক হয় তবে ফলাফলটি মেঝেতে পরিণত হয়, অর্থাৎ শূন্য থেকে দূরে (নেতিবাচক অনন্তের দিকে):

উদাহরণ: 9//2 = 4এবং 9.0//2.0 = 4.0, -11//3 = -4,-11.0//3 = -4.0

/বিভাগ এবং //মেঝে বিভাগ উভয় অপারেটর একই ফ্যাশনে পরিচালনা করছে।


2
অনন্তের দিকে এবং শূন্য থেকে দূরে আলাদা জিনিস। (-1.2 এবং 3.4) এর উদাহরণ: "মেঝে" negativeণাত্মক অনন্ত (-2 এবং 3) এর দিকে, "কাটা" শূন্যের দিকে (-1 এবং 3), "স্যাচুরটিং" শূন্য থেকে দূরে (-2 এবং 4), এবং "সিলিং" ইতিবাচক অনন্তের দিকে (-1 এবং 4)।
ফার্নোস্ট


3

//মেঝে বিভাগ, এটি আপনাকে সর্বদা ফলাফলের পূর্ণসংখ্যার তল দেবে। অন্যটি হ'ল 'নিয়মিত' বিভাগ।


2

সমীকরণের উত্তরটি পরবর্তী ছোট ছোট পূর্ণসংখ্যায় গোল হয় বা দশমিক বিন্দু হিসাবে .0 দিয়ে ভাসা করে।

>>>print 5//2
2
>>> print 5.0//2
2.0
>>>print 5//2.0
2.0
>>>print 5.0//2.0
2.0

2

উপরের উত্তরগুলি ভাল। আমি আরেকটি বিষয় যুক্ত করতে চাই কিছু মান পর্যন্ত উভয়ই একই ভাগফলের ফলাফল করে। এর পরে মেঝে বিভাগ অপারেটর ( //) সূক্ষ্ম কাজ করে তবে বিভাগ ( /) অপারেটর নয়।

 - > int(755349677599789174/2)
 - > 377674838799894592      #wrong answer
 - > 755349677599789174 //2
 - > 377674838799894587      #correct answer

-1

5.0//2ফলাফলগুলি প্রাপ্ত হয় 2.0, এবং না 2কারণ অপারেটর থেকে রিটার্ন মানের রিটার্ন টাইপ// পাইথন জবরদস্তি (টাইপ কাস্টিং) বিধি অনুসরণ করে।

পাইথন ডেটা ক্ষতি এড়াতে নিম্ন ডেটাটাইপ (পূর্ণসংখ্যা) উচ্চতর ডেটা টাইপ (ফ্লোট) এ রূপান্তরকে উত্সাহ দেয়।


-1
  • // এটি মেঝে বিভাগ, এটি সর্বদা আপনাকে ফলাফলের তল মান দেয়।
  • এবং অন্যটি /হ'ল ভাসমান-বিন্দু বিভাগ।

অনুসরণগুলি হ'ল /এবং এর মধ্যে পার্থক্য //; আমি পাইথনে এই পাটিগণিত অপারেশনগুলি পরিচালনা করেছি 3.7.2

>>> print (11 / 3)
3.6666666666666665

>>> print (11 // 3)
3

>>> print (11.3 / 3)
3.7666666666666667

>>> print (11.3 // 3)
3.0

2
এই উত্তরটি কীভাবে এমন কিছু যুক্ত করবে যা অন্যান্য ধারণাগুলি অন্তর্ভুক্ত নয়? বা এই উত্তরটি অন্য উত্তরগুলির চেয়ে কোনওভাবে কীভাবে ভাল?
ররি দাউলটন

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