[英]C double not working as expect
我正在寫一些需要將29除以10的地方,但是當我將其存儲為雙精度時,它將輸出2.0000而不是2.9。 有人可以解釋為什么會這樣以及如何解決嗎?
double a = 29/10;
output: 2.0000
double
可以按預期工作,只是您沒有為其分配double
類型的表達式。
您分配的是一個int
,將29
int
除以10
一個int
。 這是2
,因為除以整數時余數將被丟棄。
將29
更改為29.0
或將10
更改為10.0
將解決此問題。
29 / 10
執行整數除法。 結果為2(余數為9)。
嘗試(double)29 / 10
29.0 / 10
或29.0 / 10
。
這是一個經典的C錯誤:您正在執行整數除法並請求浮點結果。
您應該使用以下方法進行浮點除法
double a = 29.0/10.0;
如果要發現有關浮點運算的所有詳細信息,則應閱讀每個計算機科學家應該了解的有關浮點運算的知識。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.