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

הוסטס - פורום אחסון האתרים הגדול בישראל (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 נתן פה, תודה לכולם על העזרה =]
נ.ב. אם יש לכם משהו יותר יעיל אני אשמח לקרוא =]

Daniel 30-03-09 14:30

לא צריך!
PHP קוד:

function round_to_half($number) {
return (
round($number 2) / 2);


יותר יעיל ויותר נוח...

ofekbaba 30-03-09 17:04

כל הכבוד, לא חשבתי על זה אפילו לא הייתי בכיוון =] תודה רבה!

Shay Ben Moshe 30-03-09 18:14

ציטוט:

נכתב במקור על ידי MasterT (פרסם 705787)
לא צריך!
PHP קוד:

function round_to_half($number) {
return (
round($number 2) / 2);


יותר יעיל ויותר נוח...

וואלה יפה :)
באמת רעיון הרבה יותר טוב משלי חח.

AlmogBaku 30-03-09 19:37

ציטוט:

נכתב במקור על ידי MasterT (פרסם 705787)
לא צריך!
PHP קוד:

function round_to_half($number) {
return (
round($number 2) / 2);


יותר יעיל ויותר נוח...

ח"ח ענקי

AlmogBaku 30-03-09 19:38

אגב, זה מובנה ב PHP
http://il.php.net/round


*מצטער על הדאבל, שחכתי :|

vadimg88 30-03-09 20:03

מובנה מגרסא 5.3

ofekbaba 30-03-09 20:58

כן אבל גרסא 5.3...


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

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