關於float和double型別資料的輸入輸出

2021-07-09 08:34:57 字數 402 閱讀 4995

(1)

printf的%f說明符既可以輸出float型又可以輸出double型。

根據「預設引數提公升」規則(在printf這樣的函式的可變引數列表中,不論作用域內有沒有原型,都適用這一規則)float型會被提公升為double型。因此printf()只會看到雙精度數。

(2)scanf對於float型別必須用%f,double必須用%lf

對於scanf,情況就完全不同了,它接受指標,這裡沒有類似的型別提公升。(通過指標)向float儲存和向double儲存大不一樣,因此,scanf區別%f和%lf。

(3)事實上,printf中沒有定義%lf,但是很多系統可能會接受它。要確保可移植性,就要堅持使用%f。

要想保留小數字數,請使用(比如保留8位小數):

printf("%.8f",a);

關於float與double區別

problem a 啤酒和飲料 time limit 1 sec memory limit 128 mb submit 175 solved 29 submit status web board description 啤酒每罐2.3元,飲料每罐1.9元。小明買了若干啤酒和飲料,一共花了s元。我們還...

double和float的區別

float a 0.1 編譯器報錯 warning c4305 initializing truncation from const double to float 原因 在c c 中 也不知道是不是就在vc 中這樣 上述語句等號右邊0.1,我們以為它是個float,但是編譯器卻把它認為是個doub...

float和double儲存方式

在c c 中float是32位的,double是64位的,兩者在記憶體中的儲存方式和能夠表示的精度均不同,目前c c 編譯器標準都遵照ieee制定的浮點數表示法來進行float,double運算。無論是float還是double,在記憶體中的儲存主要分成三部分,分別是 1 符號位 sign 0代表正...