আমি ফ্লোটকে ইনট-এ রূপান্তর করতে নীচের লাইনটি ব্যবহার করেছি, তবে এটি আমার পছন্দ মতো সঠিক নয়:
float a=8.61f;
int b;
b=(int)a;
ফলাফল হলো : 8
(এটি হওয়া উচিত 9
)
কখন a = -7.65f
, ফলাফল:-7
(এটি হওয়া উচিত -8
)
এটি করার সর্বোত্তম উপায় কী?
আমি ফ্লোটকে ইনট-এ রূপান্তর করতে নীচের লাইনটি ব্যবহার করেছি, তবে এটি আমার পছন্দ মতো সঠিক নয়:
float a=8.61f;
int b;
b=(int)a;
ফলাফল হলো : 8
(এটি হওয়া উচিত 9
)
কখন a = -7.65f
, ফলাফল:-7
(এটি হওয়া উচিত -8
)
এটি করার সর্বোত্তম উপায় কী?
উত্তর:
ব্যবহারের Math.round()
ফলে ভাসমানটি নিকটতম পূর্ণসংখ্যায় যাবে।
(int)foo
সহজতর।
আসলে, আপনি যে ফলাফলটি অর্জন করতে চান তার উপর নির্ভর করে ফ্লোটকে ডাউন কাস্ট করার বিভিন্ন উপায় রয়েছে: (ইনট জন্য i
, ফ্লোট f
)
গোল (প্রদত্ত ভাসমানের নিকটতম পূর্ণসংখ্যা)
i = Math.round(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -3
দ্রষ্টব্য: এটি চুক্তি দ্বারা সমান (int) Math.floor(f + 0.5f)
কাটা (অর্থাত্ দশমিক বিন্দুর পরে সবকিছু ফেলে দিন)
i = (int) f;
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
সিল / ফ্লোর (কোনও পূর্ণসংখ্যার প্রদত্ত মানের চেয়ে সর্বদা বড় / ছোট যদি এর কোনও ভগ্নাংশ থাকে)
i = (int) Math.ceil(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 3 ; f = 2.68 -> i = 3
f = -2.0 -> i = -2 ; f = -2.22 -> i = -2 ; f = -2.68 -> i = -2
i = (int) Math.floor(f);
f = 2.0 -> i = 2 ; f = 2.22 -> i = 2 ; f = 2.68 -> i = 2
f = -2.0 -> i = -2 ; f = -2.22 -> i = -3 ; f = -2.68 -> i = -3
ধনাত্মক মানগুলিকে গোল করার জন্য , আপনি কেবল ব্যবহার করতে পারেন (int)(f + 0.5)
, যা Math.Round
সেই ক্ষেত্রে (ডক হিসাবে) ঠিক যেমন কাজ করে ।
আপনি নিকটতম এমনকি পূর্ণসংখ্যারMath.rint(f)
জন্য রাউন্ডিং করতেও ব্যবহার করতে পারেন ; এটি যুক্তিযুক্তভাবে কার্যকর যদি আপনি ভগ্নাংশের অংশের সাথে প্রচুর পরিমাণে ভাসমান অংশটি .5 এর সমানভাবে সমান (সম্ভাব্য আইইইই রাউন্ডিং ইস্যুগুলি নোট করুন) এবং সেটটির গড় স্থিতি রাখতে চান বলে মনে করেন; আপনি আরেকটি পক্ষপাতিত্ব চালু করবেন, যেখানে এমনকি সংখ্যাগুলি বিজোড়ের চেয়ে বেশি সাধারণ হবে।
দেখা
http://mindprod.com/jgloss/round.html
http://docs.oracle.com/javase/6/docs/api/java/lang/Math.html
আরও তথ্য এবং কিছু উদাহরণের জন্য।
Math.round(value)
মানটি নিকটতম পুরো সংখ্যায় গোল করুন।
ব্যবহার
1) b=(int)(Math.round(a));
2) a=Math.round(a);
b=(int)a;
ম্যাথ.উইন্ডও একটি পূর্ণসংখ্যার মান দেয়, তাই আপনাকে টাইপকাস্ট করার দরকার নেই।
int b = Math.round(float a);
Math.round(value)
টাইপ করার পরে এটি পূর্ণসংখ্যার জন্য ব্যবহার করুন ।
float a = 8.61f;
int b = (int)Math.round(a);
আমার হিসাবে, সহজ: (int) (a +.5) // a একটি ভাসা। বৃত্তাকার মান ফেরত দিন।
জাভা ম্যাথ.গ্রাউন্ড () প্রকারের উপর নির্ভরশীল নয়