如果檢視float型別的變數小數點後有幾位數

時間 2021-08-15 00:21:09

1樓:飛花的月

預設六位小數,不夠就補零,比如講1賦給浮點型變數a,輸出是1.000000

2樓:year蘇張楊

理論上是6位,但是輸出時,可以限制小數位。

3樓:金色潛鳥

可以檢視,(例如,用sprintf, 轉成字串,一個字元一個字元地統計。)但得到的結果不一定可靠,或不是期望的。

原因是 計算機內部用 2進位制,我們輸入輸出用 10進位制。 10進位制到2進位制,小數部分常 「化不淨」,2進位制再轉回10進位制,又 「化不淨」。

float型別的變數,精度只有 6-7 位有效數字,超出7 位又引進 「截斷誤差」。

例如:float x = 0.0000000000000000012300; 眼睛可以看出有20位小數,不是22位小數。

但通過計算機,化不淨,引進 截斷誤差:

printf("%g\n",x); //1.23e-018 --- 這個可以,18+2位得 20

printf("%.15g\n",x); // 1.22999999327834e-018 -- 這個 不行了。

4樓:匿名使用者

printf("%15.15g",var);

c語言如何判斷一個小數的小數點後有幾位

5樓:匿名使用者

利用整數的截斷效果,將資料小數部分單取出來,乘以10後取整,與原數比較,若不等,則判斷大於小數點後1位,依此計算直到相等為止。

在取整時進行小數點後1位四捨五入可部分防止二進位制浮點數與真實資料間的舍入誤差問題。

c語言中,float型和double型變數如果不指定寬度,應分別保留小數點後幾位?????

6樓:匿名使用者

double與float的區別在於在記憶體中存放資料時佔用的記憶體不一樣,前者8位元組,後者4位元組,也就是前者儲存的小數位數比後者多一倍。

舉例說明對於1.9999996666,按照float輸出,結果可能為1.999999,如果按照double可能為1.

999999。因為c語言預設輸出小數位數都取6位,這時候看起來沒有區別,但是如果你進行格式控制,比如使用%.10,即小數保留10位,float輸出結果為1.

9999990000,而double輸出結果則為1.9999996666

c語言浮點型小數點後為多少位

7樓:假面

單精度浮

點型小bai數點後面有du效數字為

zhi7位和雙精度浮點型小數點後面有dao效版數字為16位。

單精度在一些權處理器上比雙精度更快而且只佔用雙精度一半的空間,但是當值很大或很小的時候,它將變得不精確。當需要小數部分並且對精度的要求不高時,單精度浮點型的變數是有用的。

例如,當表示美元和分時,單精度浮點型是有用的。在foxpro中,單精度浮點型是為了提供相容性,浮點資料型別在功能上等價於數值型。

8樓:great小明童鞋

浮點型變數分為單精度(float型)、雙精度(double型)、長雙精度(long double型)3類,單精度浮點型小數點後專

面有效數屬字為6~7位和雙精度浮點型小數點後面有效數字為15~16位,單精度為32位,雙精度為64位,8位為一個位元組。

實數3.14159在記憶體中的存放形式為+.3141591,+為數符,.314159為小數部分,1為指數10^1,所以單精度提供的是7位有效數字。

c語言是什麼:

首先,人類發明了計算機,需要與計算機「交流」,即寫入和讀出,而且硬體需要與軟體相配才能發揮作用,這樣必須發明一中語言讓人類與機器能夠交流,就誕生了機器語言,也就是低階語言。同時因為機器硬體畢竟不如人聰明(耶~),而且二進位制也是最貼近硬體的語言,所以發明的語言也是最簡單的二進位制,而普通人甚至是科學家也難懂,所以發明了一些高階語言,如同c語言,c++等等。

9樓:文化廚子

c語言中浮點型bai一般du分為float單精度型、zhidouble雙精度型、long double長精度型,單精dao度浮點型小內數點後面有效數字為容6~7位和雙精度浮點型小數點後面有效數字為15~16位。

在c語言標準庫標頭檔案float.h定義了浮點數小數點後的有效位數 :

//float.h標頭檔案的部分**

#define dbl_dig 15    //雙精度小數點後15位#define flt_dig 6     //單精度小數點後6位#define ldbl_dig 19   //長雙精度小數點19

10樓:a九尾妖姬

c語言來中浮點型一般分為float單精度源型、double雙精度型、long double長精度型,單精度浮點型小數點後面有效數字為6~7位和雙精度浮點型小數點後面有效數字為15~16位。

在c語言標準庫標頭檔案float.h定義了浮點數小數點後的有效位數 :

//float.h標頭檔案的部分**

#define dbl_dig 15 //雙精度小數點後15位#define flt_dig 6 //單精度小數點後6位#define ldbl_dig 19 //長雙精度小數點19

11樓:匿名使用者

1.有效數字:

c語言bai中浮點型一du般分為float單精zhi度dao型、double雙精度型

單精度浮點型小數點後面專有效數字為屬7位和雙精度浮點型小數點後面有效數字為16位。

實數3.14159在記憶體中的存放形式為+.3141591,+為數符,.314159為小數部分,1為指數10^1,所以單精度提供的是7位有效數字。

2.位元組:

位元組是計算機資訊科技用於計量儲存容量的一種計量單位,也表示一些計算機程式語言中的資料型別和語言字元。一個英文字母(不分大小寫)佔一個位元組的空間,一箇中文 漢字佔兩個位元組的空間。一個 二進位制數字序列,在 計算機中作為一個數字單元,一般為8位二進位制數佔一個位元組,換算為 十進位制就是0~255。

12樓:匿名使用者

4個位元組是32位,比如32個1 七位有效就是隻記錄小數點後的六位,剩下的就不精確了 比如剩下的全用0代替了 ,顯示預設只有六位,可以控制!

13樓:瘋狂夏風翼

浮點型變數分為單bai

精度(dufloat型)、雙精度(double型)、長雙zhi精度dao(long double型)3類,內單精度浮點型小

數點後面有容效數字為6~7位和雙精度浮點型小數點後面有效數字為15~16位,單精度為32位,雙精度為64位,8位為一個位元組。

實數3.14159在記憶體中的存放形式為+.3141591,+為數符,.

314159為小數部分,1為指數10^1,所以單精度提供的是7位有效數字。希望你能明白~~~樂意為您開心服務~~~

14樓:匿名使用者

他那個有效數抄字就是比如說

baiflaot i = 3.12345678; float的有效數字為6位, 那麼du你輸出的時zhi候就會混沌化,也就是精度dao丟失,printf(「%lf」,i); 那麼他就會輸出3.12345754什麼的,也就是說當值多於有效數字的時候,那麼超出的部分值就是不可靠的值。

15樓:匿名使用者

單精度是七位,雙精度是十五位

c語言,double型別的變數使用scanf 函式賦值後再

c語言中double輸入輸出,都用 lf 進行格式化,是否寫成了 f,這個是float型別。include int main 2.字元定義如下 字元 對應資料型別 含義 d i int 接受整數值並將它表示為有符號的十進位制整數,i是老式寫法 o unsigned int 無符號8進位制整數 不輸出...

能否建立void指標指向任何型別的變數

使用型別轉換的時,以void 為中介型別是個次等選項,能不用就別用。因為在強制型別轉換中,轉換到void 型別的結果會將帶型別的指標 typed pointer 的型別資訊悉數抹除,在典型的情況下,只要以void 為型別轉換的中介型別,則必須牢記這個指標的原始型別資訊,並 適時的在通過一次強制的型別...

cstring型別的變數中存放的是指向字串的指標

首先 指標的變數 字首 統一報錯,其次,想列印出地址對於非指標物件的變數統一使用 string 是字串,想訪問地址得用 或者也可以。樓主,還是複習下指標和變數吧。 斷的刃 string型別的變數中存放的是指向字串的指標,string s 12345 那s就是存放那個指標的,既然s存放了那個指標,那麼...