conversion from "double" to "float", possible loss of data 翻譯:從double轉成float,可能會造成資料丟失。現在的計算機,double型別儲存佔8位元組,float型別儲存佔4位元組,當兩個不同型別的資料進行賦值時,系統進行隱式型別轉換,高精度向低精度的賦值時,低精度變數無法完整儲存高精度資料,系統會自動“截斷”部分內容,完成資料轉存,這樣就有可能會造成資料精度丟失。在C/C++語言中,浮點型常數的預設型別是double型別,如0.5 ,123.45等,若想得到float型別常數,則要在常數後加f 字元,如:0.5f , 123.45f等當把double型別資料賦值給float型別變數時,系統編譯時會報以下警告:warning C4244: "=" : conversion from "double" to "float", possible loss of data 一般這種錯誤常見於:
conversion from "double" to "float", possible loss of data 翻譯:從double轉成float,可能會造成資料丟失。現在的計算機,double型別儲存佔8位元組,float型別儲存佔4位元組,當兩個不同型別的資料進行賦值時,系統進行隱式型別轉換,高精度向低精度的賦值時,低精度變數無法完整儲存高精度資料,系統會自動“截斷”部分內容,完成資料轉存,這樣就有可能會造成資料精度丟失。在C/C++語言中,浮點型常數的預設型別是double型別,如0.5 ,123.45等,若想得到float型別常數,則要在常數後加f 字元,如:0.5f , 123.45f等當把double型別資料賦值給float型別變數時,系統編譯時會報以下警告:warning C4244: "=" : conversion from "double" to "float", possible loss of data 一般這種錯誤常見於:
用浮點常數給float型別變數賦值,如:float f=0.1 ; 正確寫法為:float f=0.1f ;呼叫返回值型別為double的函式,給float型別變數賦值,如:float f=pow(x,n); pow返回引數x的n次冪。 正確寫法:float f=powf(x,n); //呼叫正確的函式 因此,資料間賦值一定要採用正確的型別,建議在使用浮點數時,只使用double型別。