C語言中的單精度雙精度數的有效位數

2021-05-28 14:21:15 字數 885 閱讀 7133

#include "stdio.h"

#include "conio.h"

void main()

觀察在vc6,wintc中的執行結果,可能是

0.123456789104328156000

0.12345678901234567700

而一般在c語言教材上說:

浮點數7位有效數字。

雙精度數16位有效數字。

單精度數的尾數用23位儲存,加上預設的小數點前的1位1,2^(23+1) = 16777216。因為 10^7 < 16777216 < 10^8,所以說單精度浮點數的有效位數是7位。 雙精度的尾數用52位儲存,2^(52+1) = 9007199254740992,10^16 < 9007199254740992 < 10^17,所以雙精度的有效位數是16位

單精度浮點數的實際有效精度為24位二進位制,這相當於 24*log102≈7.2 位10進製的精度,所以平時我們說「單精度浮點數具有7位精度」。(精度的理解:當從1.000...02變化為1.000...12時,變動範圍為 2-23,考慮到因為四捨五入而得到的1倍精度提高,所以單精度浮點數可以反映2-24的數值變化,即24位二進位制精度)

浮點數7位有效數字。(應該是單精度數)

雙精度數16位有效數字。

浮點數取值範圍:

負數取值範圍為 -3.4028235e+38 到 -1.401298e-45,正數取值範圍為 1.401298e-45 到 3.4028235e+38。

雙精度數取值範圍:

負值取值範圍-1.79769313486231570e+308 到 -4.94065645841246544e-324,正值取值範圍為 4.94065645841246544e-324 到 1.79769313486231570e+308。

關於單精度 雙精度的概念

單精度和雙精度數值型別最早出現在c語言中 比較通用的語言裡面 在c語言中單精度型別稱為浮點型別 float 顧名思義是通過浮動小數點來實現資料的儲存。這兩個資料型別最早是為了科學計算而產生的,他能夠給科學計算提供足夠高的精度來儲存對於精度要求比較高的數值。但是與此同時,他也完全符合科學計算中對於數值...

VB6中雙精度和單精度資料型別的比較

單精度 single 和雙精度 double 資料 類型是vb6裡的兩種浮點型別 它們被用來儲存帶有小數的數值。小數的位數可以變化 所以名字叫 浮點 因為小數點的位置可以變化。例如 1.23456 12.3456 123.456 雙精度和單精度的差別 大多數程式設計師都知道雙精度型別容納的數值要比單...

Fortran 函式中單精度,雙精度不匹配的錯誤

錯誤例項01 program subroutine real 4 arr arr 1.1 call fun1 arr endsubroutine fun1 arr real 8 arr write arr end情況下 主程式定義了乙個 單精度的變數 arr 賦值為1.1,子函式的變數型別是雙精度。...