我想添加一個int到一個浮點數。我的代碼是:鑄造int作爲浮點數
int main() {
char paus[2];
int millit = 5085840;
float dmillit = .000005;
float dbuffer;
printf("(float)milit + dmillit: %f\n",(float)millit + dmillit);
dbuffer = (float)millit + dmillit;
printf("dbuffer: %f\n",dbuffer);
fgets(paus,2,stdin);
return 0;
}
輸出看起來像:
(浮動)millit + dmillit:5085840.000005
dbuffer中:5085840.000000
爲什麼是有區別嗎?我也注意到,如果我改變dmillit = .5,那麼兩個輸出是相同的(5085840.5),這是我所期望的。爲什麼是這樣?謝謝!
http://stackoverflow.com/questions/1907114/integers-and-float-precision – 2010-08-27 19:58:38
float的可能重複只有double的精度的一半,甚至double可以不如「浮點」寄存器精確。如果你正在做「浮點」計算,通常最好使用double而不是float(除非你有一些奇怪的空間要求)。 – 2010-08-27 21:53:00
要指出(有點)顯而易見的,'float'只有大約7位數的精度。你的整數已經把所有的東西都浸透了,所以在小數點後面沒有任何剩餘部分來表示六個地方。換個角度看,'dbuffer'也得到了你所告訴的結果,並具有你允許的所有精度。 – RBerteig 2010-08-28 08:13:59