c語言double型別printf問題

2022-04-07 05:54:05 字數 485 閱讀 9926

背景:今天在用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詳細使用規則。

c語言double型別printf問題

背景 今天在用c語言寫程式時遇到了乙個問題 printf lf double r 竟然輸出亂碼 0.000000 瀏覽了幾十個網頁之後,大致找到了問題原因。結論 在c語言中,double型別的讀入必須用 lf 輸出必須用 f 解釋 double和float的精度是不同的,故儲存空間也是不同的,所以如...

C 之Float型別, double型別

c 裡的小數分為float和double兩種型別,這兩種型別,直接看 及執行結果我們來看一下他們有什麼區別 include iostream using namespace std int main 再來看 的執行結果 接下來分析一下 邏輯很簡單,這裡只說一行 cout.setf ios base ...

c 語言 double 除法 c語言 基本運算

一 算術運算子 算術運算子非常地簡單,就是小學數學裡面的一些加減乘除操作。不過呢,還是有一些語法細節需要注意的。1.加法運算子 1 int a 10 2 3 int b a 5 在第3行利用加法運算子 進行了加法運算,再將和賦值給了變數b,最終變數b的值是15 2.減法運算子 或 負值運算子 1 i...