-4
これは私が定式化しようとしているプログラムの一部です。私の入力が4桁の数字であるときは、期待される出力が10000であるときに、プログラムからの「z」の値が9999になる。また、これはある桁の入力に対してのみ起こる。例えば、私の入力が5桁の数字であるとき、私は期待される出力である100000の出力を得ます。なぜこうなった?入力を1234として入力すると、出力は9999になりますが、期待している出力は10000です。私のコードで何が問題になっていますか?
#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);
}
入力:
出力:として
LEN = 4入力はそう1234である場合私の出力は10000
精度が問題になる場合は、浮動小数点数の代わりに整数を使用します。 – BLUEPIXY
どこに 'itoa()'がありますか?それ以前にそれを見て覚えていない。 –
'9999.99999999'が' int'に代入されると、丸められずに切り捨てられます。浮動小数点演算は壊れていますか?(http://stackoverflow.com/questions/588004/is-floating-point-math-broken) –