c語言浮點型精度
1. c語言如何輸出雙精度浮點型數據
1.雙精度浮點型數據用%lf輸出。因為double是8個位元組的,float是4個位元組的,%f 的格式就是4個位元組的,而 %lf 就是8個位元組的。 例如:printf("%lf ",x);
2.short 佔用內存空間2個位元組,短整型數據用%d輸出 例如:printf("%d ",a);
例:
#include <stdio.h>
int main()
{double x;
short int a;
printf("%lf",x); // 輸入double型
printf("%d",a); //輸入短整型
return 0;
}
(1)c語言浮點型精度擴展閱讀:
C語言特有特點
1.C語言是一個有結構化程序設計、具有變數作用域(variable scope)以及遞歸功能的過程式語言。
2.C語言傳遞參數均是以值傳遞(pass by value),另外也可以傳遞指針(a pointer passed by value)。
3.不同的變數類型可以用結構體(struct)組合在一起。
4.只有32個保留字(reserved keywords),使變數、函數命名有更多彈性。
5.部份的變數類型可以轉換,例如整型和字元型變數。
6.通過指針(pointer),C語言可以容易的對存儲器進行低級控制。
7.預編譯處理(preprocessor)讓C語言的編譯更具有彈性。
2. c語言中float型的精度問題
浮點數不是連續值,有一定精度,特點是動態范圍大。它還沒有int的精度高,因為int是32位表示,float只有23位有效值,其他是符號位和指數。
既然計算得不到12.10,就是浮點數不能精確表示12.10。
c
=
12.099998精度也很高了,只差0.000002,差值很小了
3. C語言浮點型小數點後為多少位
單精度浮點型小數點後面有效數字為7位和雙精度浮點型小數點後面有效數字為16位。
單精度在一些處理器上比雙精度更快而且只佔用雙精度一半的空間,但是當值很大或很小的時候,它將變得不精確。當需要小數部分並且對精度的要求不高時,單精度浮點型的變數是有用的。
例如,當表示美元和分時,單精度浮點型是有用的。在foxpro中,單精度浮點型是為了提供兼容性,浮點數據類型在功能上等價於數值型。
(3)c語言浮點型精度擴展閱讀:
浮點數是屬於有理數中某特定子集的數的數字表示,在計算機中用以近似表示任意某個實數。具體的說,這個實數由一個整數或定點數(即尾數)乘以某個基數(計算機中通常是2)的整數次冪得到,這種表示方法類似於基數為10的科學計數法。
浮點數參與的運算,這種運算通常伴隨著因為無法精確表示而進行的近似或舍入。補碼系統的0就只有一個表示方式,這點和反碼系統不同(在反碼系統中,0有二種表示方式),因此在判斷數字是否為0時,只要比較一次即可。
4. C語言中浮點數的精度問題
如果你輸入的時候用%f,那麼可能編譯能通過,但是會有警告,運行的時候就會出現問題,因為你要是按%f輸入一個浮點類型的數,那麼存儲變數的時候,每個變數會佔四個位元組,而當你用到變數時,是double類型的,會出去八個位元組,這八個位元組可能四個是你輸入的,剩下的那四個就是屬於垃圾數據了,所以不行,而當你用%lf輸入時,存儲是八個位元組,用的時候也是八個位元組,所以就沒問題了。