簡體   English   中英

C double不能按預期工作

[英]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 / 1029.0 / 10

這是一個經典的C錯誤:您正在執行整數除法並請求浮點結果。

您應該使用以下方法進行浮點除法

double a = 29.0/10.0;

如果要發現有關浮點運算的所有詳細信息,則應閱讀每個計算機科學家應該了解的有關浮點運算的知識。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM