乘法我有這樣的代碼:問題在C
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main(){
char name[]="g9.59e10.01024";
int a = atoi(&name[1]);
int b = atoi(&name[3]);
int c = atoi(&name[6]);
int d = c-2;
int e = pow(10,d);
int f = (100*a+b);
printf("%d",a);
printf("\n");
printf("%d",b);
printf("\n");
printf("%d",c);
printf("\n");
printf("%d",d);
printf("\n");
printf("%d",e);
printf("\n");
printf("%d",f);
printf("\n");
float mass_gal = e*f;
printf("%f",mass_gal);
printf("\n");
}
當我運行它,我得到這個輸出:
9, 59, 10, 8, 億, 959 , 1410719488.000000
所有的數字似乎是正確的,除了最後一個應該是95900000000.爲什麼我在那裏得到一個錯誤的數字?
謝謝!
如果我這樣做,我得到95900000256.000000,這是好的,但最終是什麼256? – Silviutz
因爲即使使用float或double,類型也有限制,並且只能處理由類型支持的值。你得到這個是因爲值95900000000不是由float類型處理的。並在您的計算機上,它似乎最接近的值是95900000256.000000 – mikedu95
我不知道這是如何編譯的!戰俘被定義爲雙打而不是整數。你應該關心數據類型。 – wegus