הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   עזרה| לעגל מספר לחצי הקרוב ביותר.. (https://hosts.co.il/forums/showthread.php?t=73051)

ofekbaba 28-03-09 21:38

עזרה| לעגל מספר לחצי הקרוב ביותר..
 
למשל 3.74 לעגל ל-3.5
2.89 לעגל ל-3

יש פונקציה או משהו?

Slash 29-03-09 03:20

באיזה שפה?

Erez | TrustMedia.co.il 29-03-09 10:35

בPHP זה round

Shay Ben Moshe 29-03-09 13:36

יש מצב שיש לזה פונקצייה בPHP שאני לא מכיר, אם לא אז הנה לך בניתי משהו קטן :)

PHP קוד:

<?php

function round_to_half($number) {
    
$floor_number floor($number); // Gets the floor number (ex:3.4->3)
    
$ceil_number $floor_number+1// Gets the ceil number (ex:3.4->4)

    
$diff_floor $number-$floor_number// Gets the difference between the number and the floor number (ex: 3.4->0.4)
    
$diff_ceil $ceil_number-$number// Gets the difference between the number and the ceil number (ex: 3.4->0.6)

    
if ($diff_floor $diff_ceil) {
        if (
$diff_floor 0.25// If the number is 0.25 or less far from its floor number
            
$return_number $floor_number;
        else 
// If the number is 0.25 or more far from its floor number
            
$return_number $floor_number+0.5;
    }
    else {
        if (
$diff_ceil 0.25// If the number is 0.25 or less far from its ceil number
            
$return_number $ceil_number;
        else 
// If the number is 0.25 or more far from its ceil number
            
$return_number $ceil_number-0.5;
    }

    return 
$return_number;
}

// Example 78.39 -> 78.5
echo round_to_half(78.39);


vadimg88 29-03-09 14:49

פונקציה מיותרת לגמרי, יש את round, ceil, floor רק לבחור בהתאם למטרת השימוש.

Shay Ben Moshe 29-03-09 14:52

ציטוט:

נכתב במקור על ידי vadimg88 (פרסם 705577)
פונקציה מיותרת לגמרי, יש את round, ceil, floor רק לבחור בהתאם למטרת השימוש.

נו.
מטרת השימוש היא לעגל לחצי (3.2 ל3 אבל 3.3 ל3.5. כמובן ש3.8 ל4 וכו')..
איך אתה היית עושה את זה בעזרת PHP?

vadimg88 29-03-09 14:55

צודק טעות שלי לא קראתי את כל ההודעה של פותח האשכול.

The SupErioR 29-03-09 15:57

אני אסביר לך בC. אני לא בטוח שזה דרך ממש יעילה, אבל היא עובד.
אני לא אכתוב את כל הקוד, רק את החלק המרכזי.

y=(float)x-(int)x;
z=1-y;
if(z=>0.5)
z=z-0.5;
x=(int)x+z;




mlnn 29-03-09 16:12

נראה שבגרסא 5.3 אפשר לעשות את זה עם ראונד.

ofekbaba 29-03-09 22:16

מצטער שלא הסברתי את עצמי כמו שצריך, התכוונתי ל-php כמובן, לפי מה שהבנתי אין פונקציה.. אני ישתמש בפונקצייה שchosen נתן פה, תודה לכולם על העזרה =]
נ.ב. אם יש לכם משהו יותר יעיל אני אשמח לקרוא =]


כל הזמנים הם GMT +2. הזמן כעת הוא 18:34.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ