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

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

Megnum 26-08-08 10:00

כפל מספרים גדולים
 
שלום חברה, הרצתי את הפקודה לבדיקה:
$n=91111111111111111111111111111111111111111111111 9;
echo $n * 93569358693869;

והפלט: 8.52520823655E+61, זה מה שהוא עושה אם מספרים גדולים, לא הבנתי מה הוא עושה מאיפה הE? הוא ממיר את זה לאקסאדצימלי? איך אפשר לסדר את זה? תודה זה ממש דחוף :]

Shay Ben Moshe 26-08-08 10:49

אז ככה, הE מסמל עוד כמה אפסים יש למספר זאת אומרת: XE+Y (כשX הוא המספר בצד שמאל וY הוא המספר של הE) שווה ל10 בחזקת Y כפול X.
לדוגמא:
7.84623E+14 זה בעצם:
7.84623
*
10^14 שהם 10000000000000
שזה אומר:
784623000000000=7.84623E+14

מקווה שהבנת משהו P:

בניה 26-08-08 12:18

גודל הinteger בPHP הוא מוגבל,אפשר להשתמש בMYSQL במקום.
ככה למשל:
SELECT 1+1

Inet 26-08-08 12:36

ציטוט:

נכתב במקור על ידי The Chosen Generl (פרסם 662705)
אז ככה, הE מסמל עוד כמה אפסים יש למספר זאת אומרת: XE+Y (כשX הוא המספר בצד שמאל וY הוא המספר של הE) שווה ל10 בחזקת Y כפול X.
לדוגמא:
7.84623E+14 זה בעצם:
7.84623
*
10^14 שהם 10000000000000
שזה אומר:
784623000000000=7.84623E+14

מקווה שהבנת משהו P:

זה לא בדיוק נכון...
E מסמל עשר בחזקת

זאת E+14 = כפול עשר בחזקת 14, מה שאמרת נכון אבל לא מדויק.

Megnum 26-08-08 16:36

תודה. ועוד שאלה פקודות cmd -> `cmd name` בPHP , עשיתי תוכנית שמשנה את השעון שבמחשב שלי. אני רואה שאני נכנס לקובץ PHP זה מתבצע הפעולה בלי לשאול אותי אם יש הרשאה להשתמש בCMD של המחשב שלי ואילו במחשב השני הפקודה לא מתבצע בכלל רק מראה דף לבן ושום קוד לא נטען לפי קוד מקור, השאלה שלי איך לגרום למחשב השני לתת גישה לבצע קוד זה? ממש תודה!

Elad-A 26-08-08 20:10

תמיד אפשר לקמבן..

תעשה משהו כזה:

PHP קוד:

$n=911111111111111111111111111111111111111111111119;
echo 
str_replace(',' '' number_format($n 93569358693869)); 


Kfir.G 26-08-08 22:39

חבל שאנשים לא אוהבים לבדוק במדריך הרישמי אף פעם :(

ציטוט:

נכתב במקור על ידי PHP.net
The size of an integer is platform-dependent, although a maximum value of about two billion is the usual value (that's 32 bits signed). PHP does not support unsigned integers. Integer size can be determined using the constant PHP_INT_SIZE, and maximum value using the constant PHP_INT_MAX since PHP 4.4.0 and PHP 5.0.5.


ציטוט:

נכתב במקור על ידי PHP.net
Integer overflow

If PHP encounters a number beyond the bounds of the integer type, it will be interpreted as a float instead. Also, an operation which results in a number beyond the bounds of the integer type will return a float instead.


עוד משהו שרציתי לומר בקשר למה שבניה אמר
ציטוט:

נכתב במקור על ידי בניה (פרסם 662718)
גודל הinteger בPHP הוא מוגבל,אפשר להשתמש בMYSQL במקום.
ככה למשל:
SELECT 1+1

אולי שכחת אבל גם לmySQL יש הגבלות (שים לב שערך ברירת המחדל הוא signed)
http://dev.mysql.com/doc/refman/5.0/...ric-types.html

לדעתי אם אתה באמת צריך להשתמש במספרים כל כך גדולים תכתוב patch בc לליבה (core) של PHP ותקצה תחום רחב יותר מdouble-word לinteger (מה שכמו שאמרתי אפשר לעשות דרך הphp.ini) אבל זה כמובן יוריד את היעילות שכן אין צורך לתאי זיכרון גדולים כל כך לרוב המספרים ולכן לדעתי ליצור סוג נוסף של משתנה מספרי הוא הפתרון האידאלי לבעיה שלך

מקווה שעזרתי,
כפיר

Megnum 26-08-08 23:07

באמת תודה על התמיכה, אפשרי היה גם בdefine :)

בניה 27-08-08 05:42

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

ואף אחד לא אמר שאין בMYSQL הגבלה.

Kfir.G 27-08-08 10:53

ציטוט:

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

ואף אחד לא אמר שאין בMYSQL הגבלה.

:-0
אף אחד לא האשים אותך וגם לא באתי לתקוף אף אחד...
פשוט כשאתה מתעסק עם דברים מובנים בשפה מסויימת טבעי שתלך לAPI של השפה (במידה וקיים כזה) ותבדוק.. זה כל מה שאמרתי ואני מצטער אם מישהו נפגע מהדברים שלי...


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

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