locked
C# RRS feed

  • שאלה

  • איך לקחת רק את המספר השלם מ double?/ איך לבדוק שמספר המופקד ב double יכול להיות int?/ איך אפשר לבדוק אם למספר יש שבר או שהוא מספר שלם?  הדרך הקצרה ביותר שיהיה נוח לכתוב ב if else

    תודה

    יום רביעי 16 ספטמבר 2015 13:53

כל התגובות

  • כדי לקבל את החלק השלם מהמספר, תצטרך להמיר את ה- double ל- int. 

    הנה דוגמת קוד: 

                double myDouble = 3.45;
                int myInt = (int)myDouble;

    לאחר ההשמה, המשתנה myInt יהיה שווה ל- 3. 
    חפש מידע על "Casting".

    יום שישי 18 ספטמבר 2015 13:17
  • ערב טוב אלי ונועם

    אם כל מה שרוצים זה לקבל את החלק השלם, אז אין צורך להמיר את סוג המשתנה. המרה היא תהליך יקר יחסית (המרה כוללת יצירת מופע של מחלקה חדשה מהסוג השני שרוצים להשתמש בו, וכמובן את חישוב ההמרה עצמה). יש הרבה מאוד דרכים לקבל את החלק של המספר השלם בצורה ישירה על ידי חישובים כמו למשל:

    1. אתה יכול להשתמש במתודה המובנית של floor שזה בדיוק המטרה שלה (מעגלת את המספר).

    2. אתה יכול לחשב את הערך של המודולו של 1 (מודולו של מספר נותן את השארית מהחלוקה ולכן 1 פחות מודולו של 1 נותן את המספר השלם, אם כי ייתכן מצבים של עיגול ספרות שעלול לגרור חוסר דיוק).

    ויש כמובן עוד דרכים ישירות או עקיפות (השימוש ב FLOOR הוא הדרך הרשמית)

    			Double d = 3214324.54325;
    			Console.WriteLine(String.Format("D = {0}; Floor = {1}; d - Modolu = {2}", d, Math.Floor(d), d - d%1 ));

    עכשיו שאלה יותר מעניינת!

    למה השאלה שלך נמצאת בפורום off topic?!?

    למה לא שאלת את השאלה בפורום C#?

    רק במזל נכנסתי לכן במקרה וראיתי את השאלה.
    יש פורום C# מיוחד בו אתם מוזמנים לקחת חלק ולעזור לאחרים גם כן :-)

    https://social.msdn.microsoft.com/Forums/he-IL/home?forum=nethe


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]


    • נערך על-ידי pituachMVP שבת 19 ספטמבר 2015 16:28
    שבת 19 ספטמבר 2015 16:25
  • לגבי החלק השני של השאלה: "איך לבדוק שמספר המופקד ב double יכול להיות int?"

    כל מספר מסוג double יכול לעבור המרה ל int. כך שהשאלה לא כל כך מובנת לי. יכול להיות שאתה מתכוון לשאול: כיצד אפשר לדעת אם מספר double הוא שלם.

    התשובה היא על ידי חישוב מודולו שהזכרתי מעל. אם המספר מודולו של 1 שווה לאפס סימן שהמספר היה כבר שלם.

    			if (d % 1 == 0)
    			{
    				Console.WriteLine("YES");
    			}
    			else
    			{
    				Console.WriteLine("NO");
    			}



    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]



    • נערך על-ידי pituachMVP שבת 19 ספטמבר 2015 16:40
    שבת 19 ספטמבר 2015 16:36