本文目錄一覽:
- 1、C程序啊,老是說conversion from ‘double ‘ to ‘int ‘, possible loss of data
- 2、求解:為何程序進行double到int的轉換出錯 C語言
- 3、c語言求素數哪裡錯了,為什麼顯示錯誤是conversion from ‘double’ to ‘int’, possible loss of data
- 4、c語言中conversion from ‘double ‘ to ‘int ‘, possible loss of data
- 5、C語言 double轉換成int時精度丟失?
C程序啊,老是說conversion from ‘double ‘ to ‘int ‘, possible loss of data
C程序conversion from ‘double ‘ to ‘int ‘, possible loss of data,是設置錯誤造成的,解決方法如下;
1、首先在電腦中,使用滑鼠雙擊打開Dev C++軟體,如圖所示。
2、打開Dev C++軟體之後,點擊新建一個源代碼,如圖所示。
3、然後鍵入代碼,如下圖所示。
4、接著點擊頁面上方的運行選項,如圖所示。
5、這時可以看到運行的結果為:100.388000,精確到小數點後六位數,如圖所示,就可以了。
求解:為何程序進行double到int的轉換出錯 C語言
double是雙精度浮點型,int是整型,只能int轉double,而double轉int肯定不行啊,非要轉的話,要強制類型轉換,但數據會丟失。
c語言求素數哪裡錯了,為什麼顯示錯誤是conversion from ‘double’ to ‘int’, possible loss of data
k=sqrt(m);主要是針對這句話說的。
m經由sqrt函數開方所得應該是double類型數據,卻用int類型的k接著。
錯誤的意思就是double轉成int可能會丟失數據精度。
可以運行,如果你想避免這個錯誤的話,把k定義成double類型就可以了。
c語言中conversion from ‘double ‘ to ‘int ‘, possible loss of data
你前面聲明 了 sum 和 d 是 int 型。
sum=(double)a*0.0315; 儘管你 用了 (double) 強制轉換,但結果會轉回 int 型,賦給 sum; 這樣,小數點一下數值全都略去了。帶來誤差。另外,如果 a 數值較大,a*0.0315 超出 int 型 允許的最大值,那麼數會超界 變負數,也帶來誤差。
d 也有同樣問題。
你應當 改用 double 型。相應的輸入輸出格式 用 %lf。
當然,如果 你的結果 都正確,說明數值範圍恰好滿足 既無小數,也沒超界,那麼你可以加上 (int) …; 例如:
sum= (int)( (double)a*0.0315);
d= (int) ( (double)a*0.0363 );
sum = sum + d;
這樣就沒有警告信息了。
C語言 double轉換成int時精度丟失?
是的,比如:2.1035 轉化為int就成了 2,小數部位就丟失了,轉化時要用強制轉化,比如:
double a = 2.01365;
int b = (int)a;
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/306991.html