一、列印float類型 %f來表示float和double類型的數字 %e來列印指數記數法的浮點數 如果系統支持十六進位的浮點數,可以使用a和A分別來代替e和E 列印long double類型要使用%Lf或%Le或%La來替代 #include<stdio.h> int D12_1_showf_pt ...
一、列印float類型
- %f來表示float和double類型的數字
- %e來列印指數記數法的浮點數
- 如果系統支持十六進位的浮點數,可以使用a和A分別來代替e和E
- 列印long double類型要使用%Lf或%Le或%La來替代
#include<stdio.h> int D12_1_showf_pt(void) { float aboat = 32000.0; double abet = 2.14e9; long double dip = 5.32e-5; printf("%f can be written %e \n", aboat, aboat); //下一行要求編譯器支持C99或其中的相關特性 printf("And it's %a in hexademical,power of 2 notation\n", aboat); printf("%f can be written %e\n", abet, abet); printf("%Lf can be written %Le\n", dip, dip); return 0; }
運行結果:
二、浮點值的上溢和下溢
- 當計算導致數字過大,超過了當前類型所能表達的範圍時,就會發生
上溢
- 這種行為過去是未定義的,現在會賦值一個
無窮大
的值,printf
該值的時候會顯示inf
或infinity
。 - 當計算導致數字過大,超過了當前類型所能表達的範圍時,就會發生
下溢
- C語言把損失了類型全精度稱為
低於正常值
的浮點值。 - C庫已經提供了用於檢查計算是否會產生一個低於正常值的函數。
#include<stdio.h> int D12_2_Floaterr(void) { float a, b; b = 2.0e20 + 1.0; a = b - 2.0e20; printf("%f\n", a); return 0; }
運行顯示:
三、源碼:
- D12_1_showf_pt.c
- D12_2_Floaterr.c
- https://github.com/ruigege66/CPrimerPlus/blob/master/D12_1_showf_pt.c
- https://github.com/ruigege66/CPrimerPlus/blob/master/D12_2_Floaterr.c
- CSDN:https://blog.csdn.net/weixin_44630050
- 博客園:https://www.cnblogs.com/ruigege0000/
- 歡迎關註微信公眾號:傅里葉變換,個人賬號,僅用於技術交流,後臺回覆“禮包”獲取Java大數據學習視頻禮包