דיוק עשרוני בחישובים

פורומים אפיון ופיתוח פריוריטי דיוק עשרוני בחישובים

  • Post
    roni
    משתתף
    היי
    איך אני קובע את רמת העיגול בהכפלה ?
    אני מחשב ערך ורוצה לעגל אותו לשתי ספרות אחרי הנקודה ואז לכפול את הערך המעוגל במספר אחר.
    לדוגמה
    מחיר ליחידה 100.81*0.37=37.2997
    אני רוצה לכפול 37.3 בכמות.
    אחרת
    מחיר לא מעוגל כפול כמות 20
    37.2997*20=745.994
    כאשר אני מציג את התוצאה בעיגול ל2 ספרות המחיר ליחידה המוצג הוא 37.30
    והסה"כ 745.99

    הבעיה ש 20*37.30= 746.00
    תודה
    רוני

מוצגות 15 תגובות – 1 עד 15 (מתוך 17 סה״כ)
  • Replies
    Lior
    מנהל בפורום
    תכפיל ב 10, תעגל כלפי מעלה ותחלק ב 10.
    הייתי כותב איזה טריגר ב FUNC בשביל ועושה אליו INCLUDE בשביל לקבל קוד נקי ומסודר

    עיגול כלפי מעלה(שים לב- התוצאה היא INT):

    :ciel_val = (ROUND(0.0 + :dec_val) >= :dec_val ?
    ROUND(0.0 + :dec_val) : ROUND(0.0 + :dec_val) + 1)

    roni
    משתתף
    היי
    אני לא רוצה לעגל כלפי מעלה. אני רוצה לקבל את המספר לאחר העיגול כפי שמוצג בחשבונית ואותו לכפול בכמות.

    לדוגמה מחיר ליחידה לאחר 61% הנחה

    SELECT 73.05 * 0.39 FROM DUMMY
    FORMAT ;

    נותן תוצאה של 28.48950000000 אשר מוצגת כ 28.49 ( שדה אפיון הצגה =2 )

    לאחר מכן אני מכפיל את המחיר בכמות 11
    חישוב במחשבון של 28.49*11 נותן ערך של 313.39.
    ניסיתי לפתור עם שימוש ב ROUND אבל זה לא הועיל

    SELECT ( ROUND (73.05 * 0.39 *100.0) ) /100.0 *11.0 FROM DUMMY
    FORMAT ;

    הערך שמתקבל הוא 313.3899999999
    אשר משום מה מוצג בדוח כ313.38
    תודה
    רוני

    Lior
    מנהל בפורום
    הי
    לא כתבתי לך איך מעגלים כלפי מעלה. אלא איך מקבלים דיוק לפי ספרות אחרי הנקודה.
    האם השתמשת בקוד ששלחתי לך ?
    roni
    משתתף
    היי ליאור
    השתמשתי וזה לא מעגל
    הקוד הרצב נותן את התוצאה אבל יש בעיה עם REALQUANT
    תודה
    רוני

    dec_val = 73.05 * 0.39 *100.0 ;
    SELECT :dec_val FROM DUMMY FORMAT ;
    SELECT REALQUANT(ROUND(0.0 + :dec_val))*10.0 FROM DUMMY FORMAT ;

    Lior
    מנהל בפורום
    הי רוני
    אתה לא מפעיל את REALQUANT נכון.
    REALQUANT מקבלת INT ולא REAL. ברוב המערכות היא מחלקת את המספר ב 1000. לכן או שתמיר ל INT את dec_val באמצעות ROUND או שפשוט תחלק ב 1000
    Lior
    מנהל בפורום
    סליחה. לא שמתי לב ל ROUND
    מה הבעיה עם ה REALQUANT ?

    תשים ב DEC_VAL את הערך המקורי
    תפעיל את הקוד
    התוצאה ב CIEL_VAL

    roni
    משתתף
    היי
    הצבתי את הערכים בנוסחה שנתת אבל לא קבלתי את הערך הרצוי של 28.49
    תודה
    רוני
    Lior
    מנהל בפורום
    הי רוני שלח את הקוד שלך
    roni
    משתתף
    הקוד שעובד רצב בקובץ טקסט
    ניתן להרצה בWINDBI
    בקוד שרשמת לא הצלחתי להגיע לתוצאה
    תודה
    רוני [file name=code.txt size=291]https://www.priority-forums.com/he/images/fbfiles/files/code.txt[/file]
    roni
    משתתף
    שלום ליאור
    ניתקלתי בבעיה חדשה. כאשר יש אחוז הנחה לשורה התוצאה משתבשת
    כמות 10
    מחיר ליחידה 303.0
    הנחה לשורה 9.0
    הנחה כללית 63.0
    התוצאה המוצגת היא 1121.20 בעוד שמחיר ליחידה הוא 112.12
    תודה
    רוני

    הקוד הוא


    ROUND (

    INVOICEITEMS.PRICE *
    (100.0 - INVOICEITEMS.PERCENT) / 100.0
    * ( (100.0 - INVOICEITEMS.TOTPERCENT) /100.0)
    * REALQUANT (INVOICEITEMS.TQUANT )
    *100.0 ) /100.0

    Lina
    משתתף
    היי רוני,

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

    (גם לי יש את הבעיה הזו בחישוב של משקל/אורך X מחיר , זה לא יוצא מדוייק )

    Lior
    מנהל בפורום
    עדיין רלוונטי ?
    roni
    משתתף
    כן מאוד.
    איך מציגים מחיר מעוגל ל2 ספרות בעמודה מחיר ומכפילים במחיר שמוצג את הכמות ומציגים בעמודה אחרת.
    יש מקרי קצה שבהם העיגול לא עובד מושלם
    תודה
    Lior
    מנהל בפורום
    צירפתי תמונה. החשבון נראה לי נכון. גם בדקתי במחשבון.
    roni
    משתתף
    היי
    טעיתי בנתונים
    רצב קוד לפי התמונה שלך
    ותמונה עם תוצאות הנתונים החדשים
    1) למה העיגול ליחידה הוא לא 381.28
    2) העיגול של הכמות כלל לא מתעגל ( כאשר אני רושם את הערכים מהתמונה שצרפת הוא כן מתעגל )
    תודה
    רוני [file name=price2.txt size=456]https://www.priority-forums.com/he/images/fbfiles/files/price2.txt[/file]
מוצגות 15 תגובות – 1 עד 15 (מתוך 17 סה״כ)
  • יש להתחבר למערכת על מנת להגיב.