দীর্ঘ পূর্ণসংখ্যার জন্য সর্বাধিক মান


108

লম্বা সংখ্যার পূর্ণতমের জন্য একটি চলকটির জন্য সর্বাধিক মান কীভাবে নির্ধারণ করতে পারি, উদাহরণস্বরূপ, সি ++ এর ক্ষেত্রে LONG_MAX


7
আমি নিশ্চিত না পাইথন পূর্ণসংখ্যা মোটেই সীমাবদ্ধ। এই মুহুর্তে আপনি sys.maxint অতিক্রম করার সময় এটি অভ্যন্তরীণ প্রতিনিধিত্বকে দীর্ঘ থেকে দীর্ঘস্থায়ী করে, যার সীমাহীন অনুমান রয়েছে।
tchap

আমি জিজ্ঞাসা করেছি কারণ একের পর এক মানগুলির একটি গ্রুপের মধ্যে আমার ন্যূনতম মান খুঁজে নেওয়া দরকার তাই প্রথমে আমাকে একটি ভেরিয়েবলের কাছে একটি বড় মান সংরক্ষণ করা দরকার যাতে আমি এটি অন্যের সাথে তুলনা করতে পারি
শ্রীভিসাখ

2
আপনার মন্তব্যে - আমি অন্তর্নির্মিত ফাংশন ন্যূনতম ব্যবহার করতে পুনরায় চাও।
জিরি

5
আপনি কেবল ন্যূনতম সন্ধান করার চেষ্টা করছেন সেক্ষেত্রে আপনার সর্বাধিক মান প্রয়োজন হবে না, এমনকি আপনি সি ++ বা অন্য কোনও ভাষায় প্রোগ্রামিং করছেন কিনা। যদি আপনি যাইহোক সমস্ত উপাদানগুলির মধ্যে লুপ করতে চলেছেন তবে কেবল প্রথম উপাদানটিকে আপনার শুরুর মান হিসাবে ব্যবহার করুন। (তবে minআপনি যদি সত্যিই পাইথনে প্রোগ্রাম করতে চান তবে ফাংশনটি ব্যবহার করা আরও ভাল !)
জন ওয়াই

3
@ শ্রীভিসাখ: "বড় মূল্য" এর জন্য, অনন্ত ব্যবহার করুন float("inf"),। বা আরও ভাল, অন্তর্নির্মিত minফাংশনটি ব্যবহার করুন ।
ফ্রেড ফু

উত্তর:


132

দীর্ঘ পূর্ণসংখ্যা:

এখানে কোন স্পষ্টভাবে সংজ্ঞায়িত সীমা নেই। উপলব্ধ ঠিকানা জায়গার পরিমাণ একটি ব্যবহারিক সীমা গঠন করে।
( এই সাইট থেকে নেওয়া )। সংখ্যার প্রকারের ডকগুলি দেখুন যেখানে আপনি এটি দেখতে পাবেন Long integers have unlimited precision। পাইথন 2-তে, পূর্ণসংখ্যাগুলি যখন তাদের সীমা ছাড়িয়ে যায় তখন স্বয়ংক্রিয়ভাবে লম্বাগুলিতে স্যুইচ করবে:

>>> import sys
>>> type(sys.maxsize)
<type 'int'>
>>> type(sys.maxsize+1)
<type 'long'>


পূর্ণসংখ্যা জন্য

ম্যাক্সিন্ট এবং সর্বাধিক:

ইন্টের সর্বাধিক মান পাইথন ২.x এর সাথে পাওয়া যাবে sys.maxint। এটি পাইথন 3 এ সরানো হয়েছে, তবে sys.maxsizeপ্রায়শই এর পরিবর্তে ব্যবহার করা যেতে পারে। চেঞ্জলগ থেকে :

Sys.maxint ধ্রুবকটি সরানো হয়েছে, যেহেতু পূর্ণসংখ্যার মানটির আর সীমা নেই। তবে, sys.maxsize কোনও ব্যবহারিক তালিকা বা স্ট্রিং সূচকের চেয়ে বড় হিসাবে পূর্ণসংখ্যার হিসাবে ব্যবহার করা যেতে পারে। এটি বাস্তবায়নের "প্রাকৃতিক" পূর্ণসংখ্যার আকারের সাথে সামঞ্জস্য হয় এবং সাধারণত একই প্ল্যাটফর্মের পূর্ববর্তী রিলিজগুলিতে sys.maxint হিসাবে একই হয় (একই বিল্ড অপশনগুলি ধরে নিয়ে)।

এবং, পার্থক্যে আগ্রহী যে কোনও ব্যক্তির জন্য (পাইথন ২.x):

sys.maxint পাইথনের নিয়মিত পূর্ণসংখ্যার ধরণের দ্বারা সমর্থিত বৃহত্তম ধনাত্মক পূর্ণসংখ্যা। এটি কমপক্ষে 2 ** 31-1। বৃহত্তম negativeণাত্মক পূর্ণসংখ্যা হ'ল ম্যাক্সিন্ট -১ - 2 এর পরিপূরক বাইনারি গাণিতিক ব্যবহারের অসম ফলাফল।

sys.maxsize প্ল্যাটফর্মের পাই_এসাইজ_টি টাইপ দ্বারা সমর্থিত বৃহত্তম ধনাত্মক পূর্ণসংখ্যার, এবং এইভাবে সর্বাধিক আকারের তালিকা, স্ট্রিং, ডিক্টস এবং অন্যান্য অনেক ধারক থাকতে পারে।

এবং সম্পূর্ণতার জন্য, পাইথন 3 সংস্করণ এখানে :

sys.maxsize একটি পূর্ণসংখ্যা প্রদান করে পাই_সাইজ_t টাইপের একটি পরিবর্তনশীল সর্বাধিক মান দেয়। এটি 32-বিট প্ল্যাটফর্মে সাধারণত 2 ^ 31 - 1 এবং 64-বিট প্ল্যাটফর্মে 2 ^ 63 - 1 হয়

floats:

আছে float("inf")এবং float("-inf")। এগুলি অন্যান্য সংখ্যার ধরণের সাথে তুলনা করা যেতে পারে:

>>> import sys
>>> float("inf") > sys.maxsize
True

আমি একই কোডটি চেষ্টা করেছিলাম তবে এটি উইন্ডোজ 64৪ বিট মেশিনে পাইথন 3-তে ইনট হিসাবে টাইপ প্রদর্শন করে। এটির জন্য কোনও মূল্যবান কারণ।
মনোজপ

1
@ মনোজপি এটি কারণ পাইথন ৩-তে পূর্ণসংখ্যার আকারের আর কোনও সীমা নেই। প্রথম ব্লকের উদ্ধৃতি দেখুন। আমি স্পষ্ট করতে সম্পাদনা করব যে উদাহরণটি পাইথন 2
কীসার

39

পাইথন longনির্বিচারে বড় হতে পারে। আপনার যদি অন্য float('inf')মানগুলির চেয়ে বড় মানের প্রয়োজন হয় তবে আপনি ব্যবহার করতে পারেন , যেহেতু পাইথনের বিভিন্ন প্রকারের সংখ্যাসূচক মানের তুলনা করতে কোনও সমস্যা নেই। একইভাবে, অন্য যে কোনও মানের চেয়ে কম মানের জন্য আপনি এটি ব্যবহার করতে পারেন float('-inf')


1
সুতরাং এটি একটি খুব বড় মান এটি কি ফিরে?
শ্রীভিশখ

4
এটি ফ্লোটিং-পয়েন্ট অনন্তটি ফেরৎ দেয় যা কোনও সীমাবদ্ধ সংখ্যার চেয়ে বেশি।
তাইমন

4
আমার বলতে হবে, এই উত্তরটি অবশ্যই ওপি'র শিরোনাম প্রশ্নটির প্রতিক্রিয়া দেওয়ার দিক থেকে সংশোধন করার সবচেয়ে নিকটতম। এটি হল, "আপনি কীভাবে পাইগন সেন্ডিনেল মান পাবেন যা আপনার সমস্ত ইনপুট (বা কমপক্ষে বৃহত্তম মানের চেয়ে ছোট নয়?) হবে?" সুতরাং আমি এই উত্তরটিকে উড়িয়ে দিয়েছি, তবে আমি মনে করি ওপি পরিবর্তে পাইথনে ভাবতে শিখলে এটি আরও ভাল।
জন ওয়াই

একমত। এটি বলেছিল, আমি এমন পরিস্থিতিতে ছিলাম যেখানে আমার যা প্রয়োজন তা করার একমাত্র উপায় ছিল।
তাইমন

21

শিরোনাম প্রশ্নের সরাসরি উত্তর:

পূর্ণসংখ্যা আকারে সীমাহীন এবং পাইথনের কোনও মান নেই।

অন্তর্নিহিত ব্যবহারের ক্ষেত্রে বর্ণিত ঠিকানাগুলির উত্তর দিন:

আপনি যা করার চেষ্টা করছেন সে সম্পর্কে আপনার মন্তব্য অনুসারে আপনি বর্তমানে কিছুটা ভাবছেন of

minval = MAXINT;
for (i = 1; i < num_elems; i++)
    if a[i] < a[i-1]
        minval = a[i];

পাইথনে কীভাবে চিন্তা করা যায় তা নয়। পাইথনের আরও ভাল অনুবাদ (তবে এখনও সেরা নয়)

minval = a[0]  # Just use the first value
for i in range(1, len(a)):
    minval = min(a[i], a[i - 1])

নোট করুন যে উপরেরগুলি MAXINT মোটেও ব্যবহার করে না। সমাধানের সেই অংশটি যে কোনও প্রোগ্রামিং ভাষার ক্ষেত্রে প্রযোজ্য: কেবলমাত্র কোনও সংকলনের ক্ষুদ্রতম মান সন্ধান করার জন্য আপনাকে সর্বোচ্চ সম্ভাব্য মান জানতে হবে না।

কিন্তু যাই হোক, আপনি কি সত্যিই পাইথন না ঠিক হয়

minval = min(a)

অর্থাৎ আপনি কোনও লুপ লেখেন না। অন্তর্নির্মিত min()ফাংশন পুরো সংগ্রহের সর্বনিম্ন পায়।


8

longপাইথন ২.x টাইপ করুন নির্বিচারে নির্ভুলতা পাটিগণিত ব্যবহার করে এবং সর্বোচ্চ সম্ভাব্য মানের মতো কোনও জিনিস নেই as এটি উপলব্ধ মেমরি দ্বারা সীমাবদ্ধ। পাইথন 3.x এর মানগুলির জন্য কোনও বিশেষ প্রকার নেই যা দেশীয় মেশিন পূর্ণসংখ্যার দ্বারা প্রতিনিধিত্ব করা যায় না - সবকিছু হ'ল intএবং পর্দার আড়ালে রূপান্তর পরিচালিত হয়।


7

পাইথনের সি / সি ++ লংয়ের বিপরীতে সীমাহীন নির্ভুলতা রয়েছে। অধ্যায় পড়ুন সাংখ্যিক প্রকারভেদ আরো জন্য পাইথন মধ্যে information.To এর পূর্ণসংখ্যা আপনি শুধু পাঠাতে পারেন সর্বোচ্চ মান নির্ধারণ sys.maxintসিসের ডকুমেন্টেশন থেকে আপনি আরও বিশদ পেতে পারেন ।


1

আপনি ব্যবহার করতে পারেন: ভাসমানের সর্বাধিক মান

float('inf')

নেতিবাচক জন্য

float('-inf')

2
শিরোনামটি "দীর্ঘ পূর্ণসংখ্যার জন্য সর্বাধিক মান" , ভাসমানের সর্বাধিক মান নয়। সুতরাং, কীভাবে এটি প্রশ্নের উত্তর দেয় তা ব্যাখ্যা ছাড়াই , আমি এই এনএএ (কোনও উত্তর নয়) বিবেচনা করি।
9

0

পাইথন 3 এ, আপনি পূর্ণসংখ্যার উপস্থাপনায় 1.7976931348623157e + 308 নম্বর পেতে ইন্ট ফাংশনে ফ্লোট মানটি পাঠাতে পারেন।

import sys    
int(sys.float_info.max)

এটি মোটেই দরকারী কিছু করে না। এটি চিত্রিত করার জন্য, int (sys.float_info.max) +1 চেষ্টা করুন এবং আপনি কেবল একটি পূর্ণসংখ্যা পাবেন যা একটি আর একটি, কারণ অন্যান্য মন্তব্যে পাইথনটি কেবল সীমাহীন নির্ভুল পূর্ণসংখ্যার সঞ্চয় করে।
টিয়ালারামেক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.