float ב-C (לא ++C)

float ב-C (לא ++C)

אני ממלא מערך של float בערכים ומדפיס אותם. אני רוצה שבהדפסה - אם הערך הוא שלם, למשל 1.0 אז יודפס רק 1. האם זה אפשרי בצורה פשוטה?
 

אלדד28

New member
אתה צריך להמיר ל-int.

אבל כמדומני יש עיגול בהמרה ל-int. אם כן, הפחת 0.5 מהמספר ואז המר אותו ל-int.
 

eyalbd

New member
תשתמש ב "g%"

זה הפורמט המתאים לדוגמא:
#include <stdio.h> int main() { float x = 7.0; printf("%g\n", x); printf("%f\n", x); }​
 

voguemaster

New member
לא במשחקים ../images/Emo3.gif

שם עובדים עם float כמעט אקסקלוסיבית.. (וזה לא חשוב כרגע שהאוגרים של ה-FPU מכילים 8 בתים). אבל שוין, לא נורא
 

אלדד28

New member
ב-opengl, אתה מתכוון.

אין סיבה לעבוד עם float, אלא אם ה-API שלך כתוב ככה.
 

voguemaster

New member
גם D3D כתוב ככה (תסתכל ב-Hים שלו)

זה יותר חסכוני ויעיל מבחינת ביצועים. למה ? דוגמא בסיסית: struct שמייצג ווקטור-3 או ווקטור-4 בעזרת float תופס מקסימום 16 בתים, לעומת ה-32 בשימוש ב-double. אומנם אין הבדל בין לטעון ל-CACHE של ה-CPU את אותם 32 בתים אבל בייצוג float אתה מעביר שני ווקטורים במכה אחת בכל קריאה של cache line. אם נצרף את העובדה שאין ממש צורך בדיוק של double, אני לא רואה סיבה אמיתית להשתמש בו. אפילו אנדרה כתב על זה בספר שלו בחלק של האופטימיזציות. אני מתפלא שאתה לא יודע את זה אלדד!
 

אלדד28

New member
חחחחחחח

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