C連載12-float類型上、下溢以及打印格式說明

1、打印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;
}
 

運行結果:
12.1git

2、浮點值的上溢和下溢

  • 當計算致使數字過大,超過了當前類型所能表達的範圍時,就會發生上溢
  • 這種行爲過去是未定義的,如今會賦值一個無窮大的值,printf該值的時候會顯示infinfinity
  • 當計算致使數字過大,超過了當前類型所能表達的範圍時,就會發生下溢
  • 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;
}
 

運行顯示:
12.2github

3、源碼:

    • 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大數據學習視頻禮包
    • 20.4
相關文章
相關標籤/搜索