㈠ 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語言中%f的輸出形式指的是什麼保留6位還是7位小數
%f :以浮點型數據形式輸出,浮點型也就是實數。一共保留6位小數。
㈢ 如何讓TC編譯器生成的目標程序不忽略小數點6位後的數字
用 double ,你用的是float吧
㈣ c++ 編譯器默認保留6位有效數字 怎麼輸出所有的數字
使用ios::floatfield等標志位。
例如:
#include <iostream>
using namespace std;
int main() {
double a = 12.123456;
cout << a << endl;
cout.setf(ios::fixed);
cout << a << endl;
}
輸出結果:
12.1235
12.123456
㈤ C++ 編譯器自動保留6位有效數字,怎麼輸出所有的位數
看你要求的
是多少,選擇合適的類型保存數據,float精度就是6位小數,想取得更高的精度使用double存儲,不要用float
double
v
=
1.1
*
1.1
*
1.1
*
1.1;
㈥ 為什麼要保留六位小數
編譯器默認的浮點數是六位小數,即使算出來是整的,後面也會跟六個零
㈦ C語言在什麼情況下需要編譯器以long類型儲存一個小數字
當表示常數時, 如果不帶小數點, 也不是帶e的科學計數法表示, 而只是純數字, 那麼系統默認是int型.
這樣要表示long范圍內的數字就可能出錯.
比如 在16位編譯器下, 如果long a=65537; 那麼 實際上a會被賦值為1,因為已經超出了16位int的范圍. 這時要正確結果就必須 long a = 65537L;
不過 對於常見的32位編譯器, long和int都是32位 就不需要這樣做了.
㈧ vc6.0編程時,double型變數輸出最多保留四位小數。
這看編譯器的吧,gcc就是6位小數,用輸出語句f控制一下嘍(%.5lf)
㈨ C語言里用浮點型來表示0.1999999,但是輸出卻是0.200000,小數位數不對,結果也不對,請高手為我解答
浮點數默認的輸出是6位小數,如果你想輸出這個,你可以設置輸出的小數點位數 輸出用%.7f 這樣可以輸出你需要的結果。後面要輸出幾位你就改成幾,小數點前面也可以加整數,表示輸出的整數占幾位。
㈩ 在VC++6.0上使用c語言編程,單精度浮點型和雙精度浮點型為何都只能精確到小數點後六位
其實就是有效位數不一樣。
浮點型變數分為單精度(float)、雙精度(double)和長雙精度(long double)3類。在Turbo C 中:
比特(位)數 有效數字
float 32 6-7
double 64 15-16
long double 128 18-19
ANSI C 並未具體規定每種類型數據的長度、精度、數值范圍,有的系統將double所增加的32位全用於存放小數部分,這樣可以增加數值的有效范圍,減少舍入誤差。有的系統則將所增加的位(bit)一部分存放指數部分,這樣可以擴大數值范圍