Dies ist nur ein Teil eines Programms, das ich versuche zu formulieren. Immer wenn meine Eingabe eine 4-stellige Zahl ist, bekomme ich den Wert von 'z' vom Programm auf 9999, wenn die erwartete Ausgabe 10000 ist. Dies geschieht auch nur für die Eingabe bestimmter Ziffern. Zum Beispiel, wenn meine Eingabe eine fünfstellige Zahl ist, bekomme ich eine Ausgabe von 100000, was die erwartete Ausgabe ist. Warum passiert dies?Wenn ich meine Eingabe als 1234 setze, bekomme ich meine Ausgabe als 9999, aber die Ausgabe, die ich erwarte, ist 10000. Was ist falsch an meinem Code?
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main() {
char m[20];
int a,b,n,len,z;
scanf("%d",&a);
itoa(a,m,10);
len=strlen(m);
z=pow(10,len);
printf("%d\n",z);
return (EXIT_SUCCESS);
}
Input:
Output:
als LEN = 4, wenn der Eingang 1234, so sollte meine Ausgabe 10000.
Wenn Genauigkeit ein Problem ist, verwenden Sie Ganzzahlen anstelle von Gleitkommazahlen. – BLUEPIXY
Woher hast du das 'itoa()'? Kann mich nicht erinnern, es früher gesehen zu haben. –
Wenn '9999.99999999'' int' zugewiesen ist, wird es abgeschnitten, nicht gerundet. Bitte beachten Sie [Ist Fließkomma-Mathematik gebrochen?] (Http://stackoverflow.com/questions/588004/is-floating-point-math-broken) –