উত্তর:
Math.round()
সম্ভবত ব্যবহার করেMidpointRounding.AwayFromZero
উদাহরণ:
Math.Round(1.2) ==> 1
Math.Round(1.5) ==> 2
Math.Round(2.5) ==> 2
Math.Round(2.5, MidpointRounding.AwayFromZero) ==> 3
double d = 1.234;
int i = Convert.ToInt32(d);
হ্যান্ডেলগুলি যেমন গোল করে:
নিকটতম 32-বিট স্বাক্ষরিত পূর্ণসংখ্যার দিকে গোলাকার। যদি মান দুটি পুরো সংখ্যার মাঝামাঝি হয় তবে সমান সংখ্যাটি ফিরে আসে; অর্থাৎ, 4.5 কে 4 এ রূপান্তর করা হয় এবং 5.5 কে 6 এ রূপান্তর করা হয়।
Math.Round
এটি আরও ভাল যে এটি প্রয়োজনীয় হিসাবে একটি int প্রদান করে।
[0,.5)
- নিচে এবং ঠিক অর্ধেক সংখ্যা - [.5,1)
- উপরে up এমনকি সামান্য কিছুটা পক্ষপাতিত্ব এমনকি সংখ্যার সাথে গোলাকার, এটি (.5,1.5)
1 তবে [1.5,2.5]
2 এর মতো হয়
আপনি ফাংশন ব্যবহার করতে পারেন:
//Works with negative numbers now
static int MyRound(double d) {
if (d < 0) {
return (int)(d - 0.5);
}
return (int)(d + 0.5);
}
আর্কিটেকচারের উপর নির্ভর করে এটি কয়েকগুণ দ্রুত।
double d;
int rounded = (int)Math.Round(d);
আমি জানি এই প্রশ্নটি পুরানো, তবে আমি আমার অনুরূপ প্রশ্নের উত্তর খুঁজতে গিয়ে এটি খুঁজে পেয়েছি। আমি ভেবেছিলাম যে আমাকে দেওয়া হয়েছে খুব দরকারী টিপ শেয়ার করব।
ইনট এ রূপান্তর করার সময়, .5
ডাউনকাস্টিংয়ের আগে কেবল নিজের মান যুক্ত করুন । হিসাবে downcasting int
সবসময় কম সংখ্যা (যেমন ড্রপ (int)1.7 == 1
), যদি আপনার নম্বর .5
বা উচ্চতর যোগ .5
এটি আপ আনতে হবে আগামী নম্বরে এবং আপনার হতাশ করার int
সঠিক মান করা উচিত নয়। (যেমন (int)(1.8 + .5) == 2
)
+ 0.5 * Math.Abs(d)
অন্যান্য উত্তরের পদ্ধতিগুলি OverflowException
যদি ভাসমানের মান আন্ত সীমার বাইরে থাকে তবে তা ছোঁড়ে। https://docs.microsoft.com/en-us/dotnet/api/system.convert.toint32?view=netframework-4.8#System_Convert_ToInt32_System_Single_
int result = 0;
try {
result = Convert.ToInt32(value);
}
catch (OverflowException) {
if (value > 0) result = int.MaxValue;
else result = int.Minvalue;
}
Ityক্যের জন্য, ম্যাথফ । রাউন্ডটোইন্ট ব্যবহার করুন ।
using UnityEngine;
public class ExampleScript : MonoBehaviour
{
void Start()
{
// Prints 10
Debug.Log(Mathf.RoundToInt(10.0f));
// Prints 10
Debug.Log(Mathf.RoundToInt(10.2f));
// Prints 11
Debug.Log(Mathf.RoundToInt(10.7f));
// Prints 10
Debug.Log(Mathf.RoundToInt(10.5f));
// Prints 12
Debug.Log(Mathf.RoundToInt(11.5f));
// Prints -10
Debug.Log(Mathf.RoundToInt(-10.0f));
// Prints -10
Debug.Log(Mathf.RoundToInt(-10.2f));
// Prints -11
Debug.Log(Mathf.RoundToInt(-10.7f));
// Prints -10
Debug.Log(Mathf.RoundToInt(-10.5f));
// Prints -12
Debug.Log(Mathf.RoundToInt(-11.5f));
}
}
public static int RoundToInt(float f) { return (int)Math.Round(f); }
আমি একটি বৈজ্ঞানিক ক্যালকুলেটর বিকাশ করছি যা একটি ইন্টার বোতাম খেলা করে। আমি নিম্নলিখিতটি একটি সহজ, নির্ভরযোগ্য সমাধান খুঁজে পেয়েছি:
double dblInteger;
if( dblNumber < 0 )
dblInteger = Math.Ceiling(dblNumber);
else
dblInteger = Math.Floor(dblNumber);
ম্যাথ.রাউন্ড কখনও কখনও অপ্রত্যাশিত বা অনাকাঙ্ক্ষিত ফলাফল উত্পন্ন করে এবং পূর্ণসংখ্যার (castালাই বা রূপান্তর মাধ্যমে রূপান্তর ...) এর সুস্পষ্ট রূপান্তর প্রায়শই উচ্চ-নির্ভুলতার সংখ্যার জন্য ভুল মান তৈরি করে। উপরের পদ্ধতিটি সর্বদা কাজ করে বলে মনে হয়।
Convert.ToInt32()
একই জিনিসটি করবে না , বা দশমিকের পরে এটি কেবল সবকিছু ছিনিয়ে নেবে?