浮點數值不一樣?怎麼辦 |
答題得分者是:RaynorPao
|
smilebye
一般會員 發表:21 回覆:33 積分:10 註冊:2004-01-18 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 大家好: 請問..float a_AVG = 0.42067810813; Label1->Caption=(a_AVG);爲什麼秀出來的值變成0.420678108930588???? 如果是>< 嗚~請多幫忙唷! >>< face="Verdana, Arial, Helvetica"> smilebye 你好: 請參考以下的範例程式碼 < class="code"> #include "stdio.h" void __fastcall TForm1::Button1Click(TObject *Sender) { double dd=0.42067810813; Label1->Caption=FloatToStr(dd); char szTemp[256]={0}; sprintf(szTemp, "%.5G", dd); Label2->Caption=(AnsiString)szTemp; } 備註: 也可以利用本站的搜尋功能,關鍵字「FloatToStrF」 -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2004/02/17 10:52:08
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
GaryKao99
中階會員 發表:46 回覆:102 積分:54 註冊:2002-08-23 發送簡訊給我 |
|
Royce520
高階會員 發表:18 回覆:157 積分:100 註冊:2002-09-13 發送簡訊給我 |
GaryKao99 你好,
哪是因為 float, double 有不同的精確度的關係 Type Range Significant digits Size in bytes
--------------------------------------------------
float 1.5 x 10^?5 .. 3.4 x 10^38 7-8 4
double 5.0 x 10^?24 .. 1.7 x 10^308 15-16 8 所以 你觀察一下你的數值 就可以了解的 *真實的事物最美, 簡單的道理最好, 我能體會的 太少*
------
不要忘記呼吸,不要忘記編程! ∩__∩ |
smilebye
一般會員 發表:21 回覆:33 積分:10 註冊:2004-01-18 發送簡訊給我 |
引言: GaryKao99 你好, 哪是因為 float, double 有不同的精確度的關係 Type Range Significant digits Size in bytes -------------------------------------------------- float 1.5 x 10^?5 .. 3.4 x 10^38 7-8 4 double 5.0 x 10^?24 .. 1.7 x 10^308 15-16 8 所以 你觀察一下你的數值 就可以了解的 *真實的事物最美, 簡單的道理最好, 我能體會的 太少*我的數值在小數點之後第10位開始有誤差 你上面的float是不是精確到10的-5次阿? 那個問號是負號嗎? 順便謝謝大家熱心的回答 我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷!
------
我是新手,程式設計的菜鳥>< 嗚~請多幫忙唷! |
Royce520
高階會員 發表:18 回覆:157 積分:100 註冊:2002-09-13 發送簡訊給我 |
smilebye 你好,
sorry 因為我從 help 文件上 copy 轉貼上來
所以出現了亂掉的現象 我又沒有全部把它修正好
在貼一次(你可以查 Real Types)
ps. 我重算了了數據, 讓他更精確點 Type |Range |Significant digits |Size in bytes
--------------------------------------------------
float 1.40 x 10^-45 .. 3.40 x 10^38 7-8 4bytes
double 4.49 x 10^-324 .. 1.79 x 10^308 15-16 8bytes 紅色部分是 有效位數, 就是表示成科學符號時
小數點後面 有意義的數字位數 一個IEEE的浮點數在電腦中的表示方式 是由三個部份組成
(1) 正負號(sign-magnitude bit)
(2) 指數(exponent bits)
(2) 尾數(fraction bits) 它們各使用多少位元, 則要看不同系統等的設計而定
IEEE 745 定義的 floating point 也就是 BCB 的
float or double 方式, 你可以參考 http://www.psc.edu/general/software/packages/ieee/ieee.html *真實的事物最美, 簡單的道理最好, 我能體會的 太少*
------
不要忘記呼吸,不要忘記編程! ∩__∩ |
GaryKao99
中階會員 發表:46 回覆:102 積分:54 註冊:2002-08-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |