ערך מוחלט בC# - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

ערך מוחלט בC#


Burned

Recommended Posts

אם אתה צריך את זה בשביל תוכנה שאתה בונה זה יותר פשוט ככה אבל אם זאת משימה לבית ספר אז אתה פשוט יכול לעשות IF שבו אתה אומר אם המספר חיובי, לא לעשות כלום, אם המספר שלילי להכפיל ב-1...

מקווה שלא הגבתי סתם ושזה לא היה מיותר...

קישור לתוכן
שתף באתרים אחרים

אם אתה רוצה להשתמש ב- Math.Pow, תוכל להעביר לו double שמחזיק בתוכו 64 ביט, רק בשימושים מעטים באמת תחרוג מהגבול העליון שלו.

ואפילו אם הצלחת לעשות את זה איכשהו, אפשר להשתמש ב-decimal שמחזיק 128 ביט ומציע דיוק עוד יותר גבוה.

מאחר ומדובר במבני נתונים שיודעים ואמורים להחזיק מספרים שברוניים, אין בעיה מהתחום הזה.

קישור לתוכן
שתף באתרים אחרים

ישנה דרך מכוערת אבל אלגוריתמית

להכפיל את המספר ב 1-

ולבדוק

אם המספר המתקבל גדול מהמספר הקודם אזי המספר החדש הוא הערך המוחלט

אם המספר המתקבל קטן מהמספר המקורי אזי הוא היה כבר חיובי

כלומר

יש לך לדוגמא משתנה d

d = f
f = f*(-1)
if(d>f){d=ereh muhlat}else {f=ereh muhlat}

קישור לתוכן
שתף באתרים אחרים

תגידו לי, מה נסגר אתכם? נראה שסובלים כאן ממקרה חמור של NIH.

פותח הת'רד שאל איך עושים ערך מוחלט ב-#C.

האנשים הנחמדים במיקרוסופט הלכו וכתבו פונקציה בשם Math.Abs שעושה בדיוק את זה. no more, no less.

עכשיו מתחילים כל מיני אנשים להמציא את הגלגל מחדש, ולהציע כל מיני פתרונות "יותר יעילים" או "יותר נכונים".

ב-99% מהמקרים, הפתרון היעיל ביותר והנכון ביותר, הוא הפתרון הסטנדרטי.

ואם ניטפל קצת יותר לפתרונות הספציפיים שהוצעו:

הפתרון של D3buG נכון, וזה בדיוק מה שהפונקציה Math.Abs עושה (אולי באופן קצת פחות יעיל).

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

הפתרון של matteo הוא סתם סיבוך של הפתרון של D3buG.

קישור לתוכן
שתף באתרים אחרים

ברור לי שאנשים עשו את זה, כי זה ספריה שיש לה שימוש, אבל עדיין חבל שאין מימוש רשמי (האמת יש, אבל הורידו אותו ברגא האחרון http://blogs.msdn.com/bclteam/archive/2008/01/04/where-did-biginteger-go-melitta-andersen.aspx ) ומימוש חובבני, עם באגים, בעיות ביצועים ועוד תוספות זה נחמד, אבל לא ממש (בגלל זה גם הורידו ברגע האחרון את המימוש הרשמי).

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...