編寫程式由下面的公式計算ex的值,精確到10e-10.
ex=1+x+x^2/2!+x^3/3!+x^4/4!+...
#include.
int main()
printf("ex=%lf\n",ex);
}程式能保證最乙個和項的值小於10e-10,間接達到了ex的精度為10e-10,這是程式設計的常用技巧之一。
#include
int main (void)
執行的結果就是 25.585,這個需要你取乙個小數點位數就精確了。。
------------------
不加 0.3的結果是25.584999 和加不加f沒關係..
但事實上來說 如果是12.585就是12.585000沒有問題了,好奇怪
#include
main()
輸出6.0
a=20.0/3
即使6.7了
#include
int main(void)
b=12345678.1111111111111111時,
輸出 float為12345678.00000000 『』;『』
double為12345678.111111112000 為什麼會是17個有效數字,2是**來的?
如果整數部分超過8位,b=12345678111.11111111111111111
float為12345677824.000000 第8位開始的數字是什麼?
double仍然為17個有效數字;
然後就是,兩個浮點數到底是有效數字保留幾位的?
在c/c++中,浮點型float用32位二進位制表示,十進位制有效數字為7位;double用64位二進位制表示,十進位制有效數字為16位。值得注意的是,無論 float還是double型,在機內都是按double運算的,區別只在輸出時的有效位數不同。當乙個數的實際長度不足要求的位數時,計算機會自動補足——但通常是乙個隨機數而不是全0……
c語言中,單精度型資料有效數字約是6~7位,數值範圍是約-3.4e-38——3.4e+38,怎麼得出來的???求解
這個比較複雜,建議你找一下ieee754標準看一下。追問這個簡單說一下吧:
在ieee754標準中進行了單精度浮點數(float)和雙精度數浮點數(double)的定義。float有32bit,double有64bit。它們的構成包括符號位、指數字和尾數字。
這些位的構成如下:
種類-------符號位-------------指數字----------------尾數字----
float---第31位(佔1bit)---第30-23位(佔8bit)----第22-0位(佔23bit)
double--第63位(佔1bit)---第62-52位(佔11bit)---第51-0位(佔52bit)
取值範圍主要看指數部分:
float的指數部分有8bit(2^8),由於是有符號型,所以得到對應的指數範圍-128~128。
double的指數部分有11bit(2^11),由於是有符號型,所以得到對應的指數範圍-1024~1024。
由於float的指數部分對應的指數範圍為-128~128,所以取值範圍為:
-2^128到2^128,約等於-3.4e38 — +3.4e38
精度(有效數字)主要看尾數字:
float的尾數字是23bit,對應7~8位十進位制數,所以有效數字有的編譯器是7位,也有的是8位
其實這些東西網上都能搜到,遇到不懂的,多在網上找下,希望能幫到你
由於float的指數部分對應的指數範圍為-128~128,所以取值範圍為:-2^128到2^128,約等於-3.4e38 — +3.4e38
既然指數範圍是-128~128,為什麼取值範圍不是-10^128到10^128???而是-2^128到2^128,指數部分只是說指數範圍是這麼多,底數是10吧,能再詳細解釋一下嘛??非常感謝!!
回答
這個是你理解錯誤,float型別的儲存是按二進位制儲存的,指數部分也是按二進位制計算的。
追問
還是不明白,我知道資料都是按照二進位制儲存的,還是不懂怎麼來的,能舉例說明嗎,願聽高見!!非常感謝!!
回答
float型資料儲存是按照二進位制來的,包括指數,舉例來說:8.25,實際上是先轉換成二進位制的科學計數形式即1.0001*2^3,儲存是儲存的這個數,這樣說明白不?
提問者評價
謝謝
因為單精度數值占用4個位元組,就是32位
第1位表示正負,最後8位表示指數字
#include
#include
int main()
直接將float後面的小數部分cut掉
float精度問題
測試發現,0.99999999f 1f為true 不能用f1 f2來判斷兩個數相等,是因為雖然f1和f2在可能是兩個不同的數字,但是受到浮點數表示精度的限制,有可能會錯 單精度浮點數 float 是用來表示帶有小數部分的實數,表示範圍大,但是有不精確 不連續的特點。占用4個位元組 32位 儲存空間。...
double和float精度問題
遇到問題 後台返回的0.0008客戶端顯示的是科學計數法。解決 把後台返回的資料先轉成bigdecimal型別再保留指定小數 注意 返回的數必須大於0,不大於0時要先判斷,不然保留的小數字數多的話還會科學計數法顯示。當後台返回的是0,我這裡保留了9位小數,還是科學計數法顯示的。bigdecimal ...
C語言中魔性的float浮點數精度問題
如果你以前接觸過c語言,那麼對下面的這段 一定很熟悉 include int main void 相信很多人不用執行,能夠直接報出答案,f num1 21.75 f num2 13.45 f num1 f num2 35.2 無論是從常識還是理論角度都不難理解。下面我們執行一下程式,驗證我們的猜測正...