『壹』 c語言double * 多少位
double佔8個位元組(64位)內存空間,最多可提供16位有效數字,小數點後默認保留6位。如全是整數,最多提供15位有效數字。測試代碼如下,
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
printf("%lf\n",123456789012345678.789);//輸出123456789012345680.000000
printf("%lf\n",(double)123456789012345678);//輸出123456789012345680.000000
printf("%lf\n",1234567890.1234567);//輸出1234567890.123457
return 0;
}
對於double類型數據,通常不能與0直接比較,而是通過其絕對值小於給定的容差值來判斷是否滿足精度需求,"float.h"頭文件往往定義了基本數據類型能夠表示的數據的最大值和最小值,比如,
#define DBL_MIN 2.2250738585072014e-308 //宏定義了double類型最小正數
『貳』 c語言中float型變數有效數字是七位,怎麼看一個數的有效位數,和數學上的有效位數是一個概念嗎
不是,變數內在給的是八位的表示,這種類型有正負,所以第一位表示正負,所以有效數字是七位,無符號型有效數字是八位,還有長整型,他是十五位有效數字
『叄』 C++中float,double到底保留幾位有效數字
float精度是2^23,能保證6位。double精度是2^52,能保證15位。但是默認float和double都只能顯示6位,再多需要#include <iomanip>,然後在輸出語句之前插入cout << setprecision(20);強制輸出小數位。
拓展資料
float與double的范圍和精度
1、范圍
float和double的范圍是由指數的位數來決定的。
float的指數位有8位,而double的指數位有11位,分布如下:
float:1bit(符號位) 8bits(指數位) 23bits(尾數位)
double:1bit(符號位) 11bits(指數位) 52bits(尾數位)
於是,float的指數范圍為-127~+128,而double的指數范圍為-1023~+1024,並且指數位是按補碼的形式來劃分的。其中負指數決定了浮點數所能表達的絕對值最小的非零數;而正指數決定了浮點數所能表達的絕對值最大的數,也即決定了浮點數的取值范圍。
float的范圍為-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范圍為-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。
2、精度
float和double的精度是由尾數的位數來決定的。浮點數在內存中是按科學計數法來存儲的,其整數部分始終是一個隱含著的「1」,由於它是不變的,故不能對精度造成影響。
float:2^23 = 8388608,一共七位,這意味著最多能有7位有效數字,但絕對能保證的為6位,也即float的精度為6~7位有效數字;double:2^52 = 4503599627370496,一共16位,同理,double的精度為15~16位。
『肆』 C語言編寫程序,對一個double型數據進行四捨五入,要求保留兩位有效小數,求演算法。
例如double型的數據為a=5.1413,程序如下:
#incloud <stdio.h>
main( )
{
double a;
printf("請輸入一個double型數據:」);
a= int (a*100+0.5)/100 ;
printf("%lf",a)。
}
這時候printf輸出的結果將是5.14。
(4)c語言double型變數有效位數擴展閱讀:
C語言編寫程序,對double型數據進行四捨五入,保留三位有效數字,程序如下:
這里以b=8.8888
#incloud <stdio.h>
main( )
{
double b;
printf("請輸入一個double型數據:」);
b= int (b*1000+0.5)/1000;
printf("%lf",b)。
}
這時候printf輸出的結果將是8.889。
『伍』 C語言中,float與double中的有效位
數值不一樣精度也不一樣,因為c中是以2進制存儲數值,轉成10進制時不定是6位還是7位這也跟不同的編譯器有關系,比如Turb C 和Vistrua C好像是不一樣的
『陸』 C語言中double要輸出幾位小數
C語言中double默認輸出 6 位小數。
如果要控制輸出小數位數,可以格式化輸出。
printf("%.3lf ", d); // "%.3lf" .3 則是輸出 3 位小數。
printf("%.4lf ", d); // "%.4lf" .4 則是輸出 4 位小數 。
C語言兼顧了高級語言的匯編語言的優點,相較於其它編程語言具有較大優勢。計算機系統設計以及應用程序編寫是C語言應用的兩大領域。同時,C語言的普適較強,在許多計算機操作系統中都能夠得到適用,且效率顯著。
(6)c語言double型變數有效位數擴展閱讀:
特點
1、簡潔的語言
C語言包含有各種控制語句僅有9種,關鍵字也只有32 個,程序的編寫要求不嚴格且多以小寫字母為主,對許多不必要的部分進行了精簡。實際上,語句構成與硬體有關聯的較少,且C語言本身不提供與硬體相關的輸入輸出、文件管理等功能。
2、具有結構化的控制語句
C語言是一種結構化的語言,提供的控制語句具有結構化特徵,如for語句、if⋯else語句和switch語句等。可以用於實現函數的邏輯控制,方便麵向過程的程序設計。
3、豐富的數據類型
C語言包含的數據類型廣泛,不僅包含有傳統的字元型、整型、浮點型、數組類型等數據類型,還具有其他編程語言所不具備的數據類型,其中以指針類型數據使用最為靈活,可以通過編程對各種數據結構進行計算。
4、豐富的運算符
c語言包含34個運算符,它將賦值、括弧等均視作運算符來操作,使C程序的表達式類型和運算符類型均非常豐富。
5、可對物理地址進行直接操作
C語言允許對硬體內存地址進行直接讀寫,以此可以實現匯編語言的主要功能,並可直接操作硬體。c語言不但具備高級語言所具有的良好特性,又包含了許多低級語言的優勢,故在系統軟體編程領域有著廣泛的應用。
6、代碼具有較好的可移植性
c語言是面向過程的編程語言,用戶只需要關注所被解決問題的本身,而不需要花費過多的精力去了解相關硬體,且針對不同的硬體環境,在用C語言實現相同功能時的代碼基本一致,不需或僅需進行少量改動便可完成移植。
7、可生成的高質量目標代碼,高執行效率的程序
與其他高級語言相比,C語言可以生成高質量和高效率的目標代碼,故通常應用於對代碼質量和執行效率要求較高的嵌入式系統程序的編寫。
『柒』 請問那個double型變數的有效數字是多少
double型變數的有效數字是15~16位
『捌』 C中的float和double的有效數字和精度各是多少
float有效數字位為6 – 7位,位元組數為4,指數長度為8位,小數長度為23位。取值范圍為3.4E-38~3.4E+38。
double有效數字位為15 – 16位,位元組數為8,指數長度為11位,小數長度為52位。取值范圍為1.7E-308~1.7E+308。
(8)c語言double型變數有效位數擴展閱讀
可根據應用程序的需求將變數聲明為 float 或 double。這兩種類型之間的主要差異在於它們可表示的基數、它們需要的存儲以及它們的范圍。如果存儲比精度更重要,對浮點變數使用 float 類型。相反,如果精度是最重要的條件,則使用 double 類型。
浮點變數可以提升為更大基數的類型(從 float 類型到 double 類型)。當您對浮點變數執行算術時,通常會出現提升。此算術始終以與具有最高精度的變數一樣高的精度執行。
『玖』 C語言中如何用實驗的方法確定double型浮點數能精確到多少位小數
可以通過定義一個double型的變數,並對變數進行賦值,之後輸出該變數的值即可。
下面舉例來具體說明:
doublef=3.141592653589;
printf("%lf",f);
實驗結果輸出3.141593,說明double型能精確到小數點後6位。
註:該測試是在32位計算機中的VS2010環境下運行的,具體的精確度還要考慮計算機的位數與編譯環境。
『拾』 c語言 double型數據的小數位數
C語言裡面,默認%f是小數點後6位,如果想小數點後面16位,寫成%.16lf
不會自動四捨五入的,double是一個近似值,通常沒有辦法做的很精確.
通常能精確到小數點後面6位,也就是說超過6位可能就不準了。