পাইথন পূর্ণসংখ্যা বিভাগে ভাসমান


223
Python 3.1 (r31:73574, Jun 26 2009, 20:21:35) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> 2/2
1.0

এটা কি উদ্দেশ্য? আমার আগের সংস্করণগুলি ফিরে আসার দৃ remember়তার সাথে মনে আছে int/int=int? আমার কী করা উচিত, কোনও নতুন বিভাগ অপারেটর আছে বা আমাকে সর্বদা কাস্ট করতে হবে?


31
হ্যাঁ, বিভাগটি 3.x এ কাজ করে।
হুগড্রাউন

2
বৃত্তাকারটি কীভাবে কাজ করে সে সম্পর্কে কথা বলার জন্য পাইথনের নির্মাতার একটি পোস্ট এখানে, এটি আপনার প্রশ্নের গোঁড়া
অ্যারন ডি

@ হগডব্রাউন তাই সব অজগর 3 সংস্করণের জন্য প্রয়োজনীয়?
চার্লি পার্কার

@hughdbrown: হ্যাঁ, PEP হয় চূড়ান্ত , যার অর্থ উভয় গ্রহণ করেন এবং বাস্তবায়িত।
জোনাস বাইস্ট্রোম

উত্তর:


285

কটাক্ষপাত PEP -238 : চেঞ্জিং বিভাগ অপারেটর

// অপারেটর নির্বিঘ্নে মেঝে বিভাগের অনুরোধের জন্য উপলব্ধ থাকবে।


10
পাইথন ২.০ এর জন্য লেখা সমস্ত কোড ব্যতীত @ জোনাথন স্টার্নবার্গ। আমি মনে করি পিছনের দিকের সামঞ্জস্যতা রাখতে / এবং // এর ভূমিকাটি বিপরীত হওয়া উচিত। এছাড়াও, প্রায় প্রতিটি অন্যান্য ভাষা / প্রকার সংরক্ষণ করে। // এর পরে আমি স্বয়ংক্রিয়ভাবে ফ্লোটে রূপান্তরিত করব, এর জন্য / আরও নয়।
থ্যাং করুন

1
দ্বিতীয় অংশটি ("এছাড়াও" পরে) অর্থবোধ করে (অন্যান্য ভাষার সাথে মিল) তবে প্রথম অংশটি সম্পর্কিত, পাইথন 3 এর পুরো পয়েন্টটি পাইথন 2 এর সাথে পিছনের দিকে সামঞ্জস্যপূর্ণ হওয়া উচিত নয়, বরং পাইথনের সমস্যাগুলির একগুচ্ছ সমাধান করা উচিত ২. যথেষ্ট লোকেরা /ভাষার ডিজাইনের "ভুল" পর্যাপ্ত পরিমাণে অস্পষ্টতা খুঁজে পেয়েছিল যে পাইথনের মধ্যে এটি নির্ধারণ করা প্রয়োজন It. এটি একটি বিতর্কিত সিদ্ধান্ত হতে পারে, তবে পর্যাপ্ত লোকেরা অনুভব করেছিলেন যে এটি সঠিক ছিল। আমাকে সেই গ্রুপে গণনা করুন যা পরিবর্তনটি পছন্দ করে। এটি চমৎকার আমরা সকলেই একমত হতে সম্মত হতে পারি। চিয়ার্স। :)
রায় তোয়াল

59

উফ, তাত্ক্ষণিকভাবে পাওয়া গেল 2//2


5
আপনি বিস্তারিত বলতে পারেন?
ব্লুফাস্ট

4
এটি ব্যবহার করে একটি ডানগনফাস্ট ভাসা নয়, একটি ইনপুট আউটপুট আসবে।
আশিস আহুজা 21'18

এটি মনে হচ্ছে নেতিবাচক সংখ্যার জন্য কাজ করে না। -1 // 5 রিটার্ন -1 এবং -5 // 5 রিটার্ন -1।
এমসচুয়েট

@ এমএসচুয়েট: এটি প্রত্যাশিত এবং এটি পাইথন ২-এর মতোই ফলাফল
জোনাস বাইস্ট্রোম

1
হ্যাঁ আমি আরও কিছু খনন করেছি এবং এটিও খুঁজে পেয়েছি। তবে আমি কল্পনা করব যে একটি শালীন আকারের সংখ্যক লোক তারা যে ভাষা থেকে এসেছে তা নির্ভর করে এটি উপলব্ধি করতে পারে না।
এমসচুয়েট

45

আশা করি এটি তাত্ক্ষণিকভাবে কাউকে সহায়তা করবে।

পাইথন 2.7 এবং পাইথন 3 তে বিভাগ অপারেটরের আচরণ

পাইথন ২.7-তে: ডিফল্টরূপে বিভাগ অপারেটর পূর্ণসংখ্যার ফলাফল দেয় return

"লভ্যাংশ বা বিভাজক" ডাবল একাধিক 1.0 এ ফলাফল পেতে

100/35 => 2 #(Expected is 2.857142857142857)
(100*1.0)/35 => 2.857142857142857
100/(35*1.0) => 2.857142857142857

পাইথন 3 এ

// => used for integer output
/ => used for double output

100/35 => 2.857142857142857
100//35 => 2
100.//35 => 2.0    # floating-point result if divsor or dividend real

1
যাইহোক, ০.০ দিয়ে গুণ করতে হবে না। এটি যথেষ্ট যে সংখ্যার একটি ফ্লোট flo যেমন, 100 / 35.0 = 100.0 / 35 = 2.857142857142857
টাল জে লেভি

21

গৃহীত উত্তর ইতিমধ্যে পিইপি 238 উল্লেখ করেছে । আমি পুরো পিইপি না পড়ে কী ঘটছে সে সম্পর্কে আগ্রহীদের জন্য পর্দার পিছনে একটি তাত্ক্ষণিক যুক্ত করতে চাই।

পাইথন মত অপারেটার মানচিত্র +, -, *এবং /বিশেষ ফাংশন, যেমন যেমন যে a + bসমতূল্য

a.__add__(b)

পাইথন 2 বিভাজন প্রসঙ্গে সেখানে ডিফল্ট হিসাবে শুধুমাত্র হয় /যা মানচিত্র __div__এবং ফলাফল ইনপুট ধরনের উপর নির্ভরশীল (যেমন int, float)।

পাইথন ২.২ __future__বৈশিষ্ট্যটি চালু করেছে division, যা নিম্নলিখিত উপায়ে বিভাগ শব্দার্থককে পরিবর্তন করেছে (টিএল; পিইপি 238 এর ডিআর):

  • /মানচিত্রগুলিতে __truediv__অবশ্যই "বিভাগের গাণিতিক ফলাফলের যুক্তিসঙ্গত প্রত্যাবর্তন অবশ্যই" (পিইপি 238 এর উদ্ধৃতি)
  • //মানচিত্র __floordiv__, যা এর মেঝে ফলাফল ফিরে উচিত/

পাইথন 3.0 এর সাথে, পিইপি 238 এর পরিবর্তনগুলি ডিফল্ট আচরণে পরিণত হয়েছিল __div__এবং পাইথনের অবজেক্টের মডেলে আর কোনও বিশেষ পদ্ধতি নেই ।

আপনি পাইথন 2 এবং পাইথন 3 ব্যবহার করে একই কোড ব্যবহার করতে চান

from __future__ import division

এবং ফূর্তি করার জন্য লাঠি 238 শব্দার্থবিদ্যা /এবং //


0

পাইথন 3 ডকুমেন্টেশন অনুসারে, পূর্ণসংখ্যা দ্বারা প্রত্যাশিত সত্ত্বেও পাইথনটি পূর্ণসংখ্যা দ্বারা বিভক্ত হয়ে ফ্লোট উত্পন্ন করবে।

একচেটিয়াভাবে পূর্ণসংখ্যা মুদ্রণের জন্য, ব্যবহার করুন floor division method। মেঝে বিভাগ শূন্য থেকে গোলাকার এবং দশমিক বিন্দু অপসারণ করছে।Represented by //

সুতরাং, 2/2 পরিবর্তে, ব্যবহার করুন 2//2

__future__পাইথন 2 বা পাইথন 3 ব্যবহার নির্বিশেষে আপনি বিভাগটি আমদানি করতে পারেন ।

আশা করি এটা সাহায্য করবে!

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