קוד קטן בC

יוגורט

משתמש מקצוען
איך מחלצים מהמספר הבא(0.12345)
את הספרות שאחרי הנקודה העשרונית?
כמובן שאני לא יודעת כמה ספרות יש לי.
 

יהודהלה

משתמש רשום
כמה שיטות:
1. לעגל למעלה ולעשות X - Y = 0.12345
קוד:
<code>int main() {   double num = 23.345;   int intpart = (int)num;   double decpart = num - intpart;   printf("Num = %f, intpart = %d, decpart = %f\n", num, intpart, decpart); }</code></pre>
2. להפוך ל STRING ולחתוך אחרי הנקודה

3. ואם זה פלט אפשר להדפיס ישירות פקודה:
קוד:
<code>printf("%.6f", myFloat);</code>
 

segalarye

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

זה נשמע מפוצץ ומסובך, אבל בתאכלס זה ממש לא ככה. כל מה שצריך זה להבין איך שפת C שומרת מספרים עשרוניים בזיכרון, ואז כבר נדע באיזו מסכה (mask) להשתמש כדי לבודד את הסיביות החשובות לנו ואם נדרשות פעולות נוספות כדי לתרגם אותן.

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

סימוכין לכל מאן דבעי:
http://en.wikipedia.org/wiki/Single_precision
http://en.wikipedia.org/wiki/Double_precision

בברכה ובהצלחה,

אריה סגל.
 

אולי מעניין אותך גם...

הפרק היומי

הפרק היומי! כל ערב פרק תהילים חדש. הצטרפו אלינו לקריאת תהילים משותפת!


תהילים פרק קכו

א שִׁיר הַמַּעֲלוֹת בְּשׁוּב יי אֶת שִׁיבַת צִיּוֹן הָיִינוּ כְּחֹלְמִים:ב אָז יִמָּלֵא שְׂחוֹק פִּינוּ וּלְשׁוֹנֵנוּ רִנָּה אָז יֹאמְרוּ בַגּוֹיִם הִגְדִּיל יי לַעֲשׂוֹת עִם אֵלֶּה:ג הִגְדִּיל יי לַעֲשׂוֹת עִמָּנוּ הָיִינוּ שְׂמֵחִים:ד שׁוּבָה יי אֶת (שבותנו) שְׁבִיתֵנוּ כַּאֲפִיקִים בַּנֶּגֶב:ה הַזֹּרְעִים בְּדִמְעָה בְּרִנָּה יִקְצֹרוּ:ו הָלוֹךְ יֵלֵךְ וּבָכֹה נֹשֵׂא מֶשֶׁךְ הַזָּרַע בֹּא יָבוֹא בְרִנָּה נֹשֵׂא אֲלֻמֹּתָיו:
נקרא  108  פעמים

אתגר AI

תאומים • אתגר 145

לוח מודעות

למעלה