1. 程式人生 > >c語言double型別printf問題

c語言double型別printf問題

背景:今天在用c語言寫程式時遇到了一個問題:printf("%lf",double(r));竟然輸出亂碼(0.000000),瀏覽了幾十個網頁之後,大致找到了問題原因。

結論:在c語言中,double型別的讀入必須用"%lf";輸出必須用"%f"

解釋:double和float的精度是不同的,故儲存空間也是不同的,所以如果要讀入double型別,必須要用%lf來讀入,以免精度丟失。而輸出,由於printf中並無對%lf的嚴格定義,故使用%lf不一定會出現正確結果。那使用%f輸出又如何呢?由於c語言中的預設引數提升規則%f輸出的不論是float還是double都會被提升到雙精度進行輸出,並不會有精度丟失。

如需更詳細解釋,請移步C語言官網檢視printf詳細使用規則。