-
float 和 double 的精度由尾數的位數決定。 浮點數按照科學記數法儲存在記憶體中,其整數部分始終是隱含的“1”,由於不變,因此不會影響精度。 float:
2 23 = 8388608,共 7 位,表示最多可以有 7 位有效位,但絕對保證是 6 位,即浮點數的準確度為 6 7 位; double:2 52 = 4503599627370496,共 16 位,同理,double 的精度為 15 16 位。
-
這個float和double可以表示,看你的問題就是問怎麼控制6位,其實這在計算上是沒有必要的,主要是輸出它,C輸出小數很簡單,float就是乙個例子printf("%.6f",float),.以下 6 是小數點後 6 位的控制輸出,f 是浮點數,double 是 %lf
-
在浮點 32-32 系統中,2 是 2 到 -32 到 -1 的 32 次方,而在 64 位系統中,它是 2 到 2 到 -64 到 -1 的 64 次方
-
C 語言:
float 有 7 位有效數字。
double:16 位有效數字。
單個數字的尾數以 23 位儲存,加上預設的小數位。
點 1,2 (23+1) = 16777216 前 1 位數字。 因為 10 7 < 16777216 <
10 8,因此單精度浮點數的有效位數為 7 位。 雙精度的尾數以 52 位儲存,2 (52+1) = 9007199254740992, 10 16
9007199254740992 < 10 17,因此雙精度的有效位數為 16 位。
單精度浮點數的實際有效精度為 24
位二進位,相當於 24*log102
位 10 精度,所以通常我們說“單精度浮點數有 7 位精度”。 (準確理解:從變化時,變化範圍是。
2-23,考慮到四捨五入導致的精度提高1倍,所以單精度浮點數可以反映從2-24的數值變化,即24位二進位精度)。
浮點 7 位有效數字。 (應為單精度數字)。
雙精度有 16 位有效數字。
浮點數值範圍:
負數的取值範圍是 ,正數的取值範圍是 。
double 數的取值範圍如下:
負值範圍為 ,正值為 。
因此,精度是測量值與真實值的接近程度。 包括精度和準確度在內的精度等級除以其在刻度盤刻度值中的允許誤差百分比,精度等級越大,刻度盤刻度極限值中的允許誤差越大。 測量範圍越大,相同精度等級下被測壓力值絕對值的允許誤差越大。
精度通常用於精度,級別,如果是並且級別屬於高精度,現在有些數字已經達到了級別。
-
計算機內部使用二進位,我們輸入十進位,所以當我們輸入 10 時,我們想轉換為 2 個基數,而當我們輸出時,我們必須將 20 個基數轉換為 10 個基數。
在轉換為二進位時,浮點資料十進位通常是“不乾淨的”。
這就像算術中的=一樣
由於位數的原因,浮點資料採用 32 位二進位,雙精度資料採用 64 位二進位。浮點有效數字精度僅為 6-7 位十進位,雙精度為 14 位。
該控制項允許它輸出許多小數位,遠遠超出計算機可以輸出的浮點數的精度範圍,但超過 6-7 位的值是不可靠的。 例如:
float x=;
printf("%",x);
計算機輸出:
顯然,小數點後面的小數1192092896000沒有實際意義。
-
什麼樣的精度問題,在二進位世界裡,討論這台電腦是兩級儲存是不現實的,這個你應該知道。
當十進位轉換為二進位時,十進位數不會近似儲存(十進位數的一小部分除外)。
這個小部分的數是 2 的 n 次方,如相等,即 1 2、1 4、3 8 等。
除此以外,其他所有內容都大致儲存。
如果你不相信,你可以用手計算小數點,把它變成二進位後,這是乙個無窮小的數字,所以討論精度問題是不現實的。
因為儲存是乙個近似值,那麼列印出來後,不可能準確是有辦法做到的,但是儲存量應該很大,就是用字串來儲存小數,應該能明白這個道理,呵呵。
-
精度主要是指儲存在記憶體中。 例如,只輸出 a=2,不輸出 或 3。
-
它相當於數學的精度,比如精確到第十位,精確到百分位數。
-
不可以,因為計算機內部的浮點數是以二進位表示的,因此必須使用十進位精度設定將其轉換為十進位(bcd、ASCII)表示形式。 要真正控制精度,除非您定義自己的 BCD 字串表示形式或十進位數的 ASCII 字串表示形式,否則會出現表示錯誤。
當然,您不必擔心表示誤差,因為它很小,因此您不必太擔心實際計算。 如果你真的需要關心,你可以使用 BCD 字串或 ASCII 字串。
否則,可以擴充套件浮點精度。
-
我不明白你的問題,但首先,我可以告訴你一點,執行時的準確性往往大於輸出時的準確性
-
你不需要關心這個準確性,你只需要關心最終的輸出......
-
首先,答案肯定不是4對,一定還有更多。
其次,你要明白,所謂的浮點答案其實是乙個整數,如果你把另乙個數字的幾個“零”給乙個浮點數,不也是整數嗎?
所以問題歸結為 16 個! 這個數字被分解為 2 個整數。 如果它是乙個整數因子,您應該首先了解如何將乙個數字拆分為 2 個整數。
第一步是以質數相乘的形式寫出數字。 例如,數字 18 寫為 18 = 2*3*3。
第二步是將上面的素數排列和組合,簡單地說,把上面的素數分成兩組,每組所有素數的乘積就是你想要的結果集。 例如,3 個數字 2、3 和 3 可以組合為乙個組合(結果為 2 和 9),並且數字是 and。
第三步是刪除重複項,例如,重複上面的第二組和第三組(因為有 2 個 3)。 這樣你得到的結果 18,在分配 2 和 9 以及 3 和 6 時可以分為 2 個整數,不要忘記還有 1 和 18。 然後,如果你想浮動這一點,它是無窮無盡的。
90 和 900 都很好。
讓我們來談談程式設計思路:
首先,你必須得到 16 個! 中的質數陣列寫為 18=2*3*3。 你不需要弄清楚結果,你只需要計算 1 16 的整數因式分解形式。 將這些素數放入乙個陣列中。
其次,假設陣列中有 n 個數字,您需要繼續取陣列中的數字。 從 1 個數字開始作為要分解的整數 1,然後以其他質數的乘積作為整數 2。 然後取 2 個數字的乘積作為整數 1,將其他整數的乘積作為整數 2。
依此類推。 只需繼續將整數 1 和整數 2 放入結果陣列中即可。
最後需要注意的是,需要排除重複的整數1和整數2,別忘了結合這個,做事要嚴謹。
以上是我的意見,如果你還是不明白,可以繼續問,希望能解決你的問題。