שאלה בסי

שאלה בסי

אני מנסה להוציא את המספר אחרי הנקודה ב float יש לי את הקוד הזה:
float n=1.25; char a[10],*i; sprintf(a,"%f",n); for(i=a;*i!='.';i++); puts(i+1);​
אבל זה מדפיס 250000 במקום 25 איך אני מתקן?
 

epsilonnow

New member
פתרון

כל מה שצריך לעשות זה לשנות ל:
sprintf(a,"%.2f",n);​
כמובן שזה יתאים רק לשני ספרות אחרי הנקודה, אם יש יותר תצטרך להמשיך לשנות....
 

Fingertip

New member
הסיבה

הסיבה שהוא מדפיס 25000 היא שכשאתה מבצע את sprintf, אז אתה יוצר את המספר:
1.250000​
בגלל הקטע של הדיוק. אתה יכול להעיף את האפסים המזדנבים באמצעות:
sprintf(a, "%g", n);​
אני חושב, אהד.
 
ממ בעייה

תודה על התגובה אבל אם המספר גדול זה מוסיף e למספר שלי בגלל ה %g, אין דרך אחרת לעשות את זה? דרך אגב תשנה את float n = 12; ב float n; scanf("%f",n) כי אחרי הנקודה אני לא יודע מה מספר התוים, זה יכול להיות כל מספר
 
למעלה