আমি প্রায়ই প্রতীক দেখা 1L(অথবা 2L, 3Lইত্যাদি) আর কোড প্রদর্শিত হয়। কী এর মধ্যে পার্থক্য 1Lএবং 1? 1==1Lমূল্যায়ন TRUE। 1Lআর কোডে কেন ব্যবহার হয়?
আমি প্রায়ই প্রতীক দেখা 1L(অথবা 2L, 3Lইত্যাদি) আর কোড প্রদর্শিত হয়। কী এর মধ্যে পার্থক্য 1Lএবং 1? 1==1Lমূল্যায়ন TRUE। 1Lআর কোডে কেন ব্যবহার হয়?
উত্তর:
সুতরাং, @ জেমস এবং @ ব্রায়ান 3 এল এর অর্থ কী তা ব্যাখ্যা করেছে । তবে কেন আপনি এটি ব্যবহার করবেন?
বেশিরভাগ সময় এটি কোনও তাত্পর্যপূর্ণ করে না - তবে কখনও কখনও আপনি আপনার কোডটি দ্রুত চালানোর জন্য এবং কম স্মৃতিশক্তি গ্রহণ করতে এটি ব্যবহার করতে পারেন । একটি ডাবল ("সংখ্যাসূচক") ভেক্টর প্রতি উপাদানটিতে 8 বাইট ব্যবহার করে। একটি পূর্ণসংখ্যার ভেক্টর উপাদান প্রতি 4 বাইট ব্যবহার করে। বড় ভেক্টরগুলির জন্য, এটি সিপিইউয়ের জন্য কম স্মৃতিশক্তি কম অপচয় করা এবং কম (তাই এটি সাধারণত দ্রুত হয়)।
সূচকগুলির সাথে কাজ করার সময় বেশিরভাগ ক্ষেত্রে এটি প্রযোজ্য। একটি পূর্ণসংখ্যার ভেক্টরটিতে 1 যুক্ত করে এটি একটি ডাবল ভেক্টরে রূপান্তরিত করার একটি উদাহরণ এখানে দেওয়া হয়েছে:
x <- 1:100
typeof(x) # integer
y <- x+1
typeof(y) # double, twice the memory size
object.size(y) # 840 bytes (on win64)
z <- x+1L
typeof(z) # still integer
object.size(z) # 440 bytes (on win64)
... তবে আরও মনে রাখবেন যে পূর্ণসংখ্যার সাথে অতিরিক্ত কাজ করা বিপজ্জনক হতে পারে:
1e9L * 2L # Works fine; fast lean and mean!
1e9L * 4L # Ooops, overflow!
... এবং @ গ্যাভিন উল্লেখ করেছেন যে, পূর্ণসংখ্যার জন্য পরিসীমা মোটামুটি -2e9 থেকে 2e9।
যদিও একটি সতর্কতাই এটি বর্তমান আর সংস্করণে প্রযোজ্য (2.13) 13 এটি কোনও সময়ে এটি পরিবর্তন করতে পারে (-৪-বিট পূর্ণসংখ্যার মিষ্টি হবে, যা দৈর্ঘ্যের ভেক্টরগুলিকে> 2e9 সক্ষম করতে পারে)। নিরাপদ থাকতে, .Machine$integer.maxযখনই আপনার সর্বোচ্চ পূর্ণসংখ্যার মান প্রয়োজন হয় (এবং সর্বনিম্নের জন্য এটি অবহেলা করুন) ব্যবহার করা উচিত।
object.size। এটি যেটির জন্য দরকারী তা ফোর্টরান বা সি কোডে পাস করা যা একটি নির্দিষ্ট ধরণের ডেটার প্রয়োজন হতে পারে।
object.size(1:100)বনাম চেষ্টা করুন object.size(1:100+0)এটি 400 বাইট + কিছু ওভারহেড বনাম 800 বাইট + কিছু ওভারহেড। আমি উপরের উদাহরণটি আপডেট করেছি।
c(1L, 2L, 3L, 4L,...100L)বনাম as.integer(c(1, 2, 3, 4,...100))।
থেকে ধ্রুবক অনুচ্ছেদ এর আর ভাষা সংজ্ঞা :
আমরা 'এল' প্রত্যয়টি যেকোন সংখ্যাকে স্পষ্ট পূর্ণসংখ্যার উদ্দেশ্যে তৈরি করতে সক্ষম করতে ব্যবহার করতে পারি। সুতরাং '0x10L' হেক্সাডেসিমাল উপস্থাপনা থেকে পূর্ণসংখ্যার মান 16 তৈরি করে। ধ্রুবক 1e3L সংখ্যার মানের চেয়ে 1000 কে পূর্ণসংখ্যা হিসাবে দেয় এবং 1000L এর সমতুল্য। (দ্রষ্টব্য যে 'এল' টিটি 1e3 শব্দটির যোগ্যতা হিসাবে বিবেচিত হবে এবং 3 নয় not) আমরা যদি 'L' এর সাথে কোনও পূর্ণসংখ্যার মান নয়, উদাহরণস্বরূপ 1e-3L এর সাথে মানটি যোগ্যতা অর্জন করি তবে আমরা একটি সতর্কতা পাই এবং সংখ্যার মানটি হয় সৃষ্টি করেছেন। সংখ্যায় অপ্রয়োজনীয় দশমিক পয়েন্ট থাকলে উদাহরণস্বরূপ 1.L. একটি সতর্কতা তৈরি করা হয় 1.
ধ্রুবকটির জন্য স্পষ্টভাবে একটি পূর্ণসংখ্যার মান তৈরি করতে আপনি ফাংশনটিকে as.integer বলতে পারেন বা আরও সহজেই "এল" প্রত্যয় ব্যবহার করতে পারেন।
1 == 1Lদেয়TRUE, কিন্তুidentical(1, 1L)দেয়FALSE।