看源碼與偵測實數中字元(不含負號,小數點) |
尚未結案
|
marky1
一般會員 ![]() ![]() 發表:17 回覆:29 積分:9 註冊:2003-03-19 發送簡訊給我 |
|
dllee
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
引言: 請問一下是否有可能看到FloatToStr()的內部程式碼 因為小弟想要偵測實數中有多少個字元 但是並不包含負號與小數點, 要不然直接用FloatToStr().Length()就好啦 所以我想要參考一下FloatToStr()是怎麼寫出來的 假如有先進有些點子或是知道如何看到函式的內部程式碼的話 麻煩點一下小弟 謝謝!可以先用 int iValue=dValue; 轉成整數,再 IntToStr(iValue).Length() 得到長度,當然還要判斷一下正負 if(iValue<0) return IntToStr(iValue).Length()-1; else return IntToStr(iValue).Length();沒空更新的網頁... http://big5.to/吃軟也吃硬 C及指標教學,計算機概論,資訊管理導論... http://home.kimo.com.tw/dllee.tw http://coolsite.to/ushells 介紹Shells,LiteStep,GeoShell.... 發表人 - dllee 於 2003/03/24 09:34:17
------
http://www.ViewMove.com |
BABM
一般會員 ![]() ![]() 發表:3 回覆:8 積分:7 註冊:2002-09-07 發送簡訊給我 |
它的內部程式碼應該是在sysutils.pas裡,如下:
function FloatToStr(Value: Extended): string;
var
Buffer: array[0..63] of Char;
begin
SetString(Result, Buffer, FloatToText(Buffer, Value, fvExtended,
ffGeneral, 15, 0));
end;
我是用搜尋的方式在CBuilder6目錄裡找的,
不知道這是不是你要的。
ps:它主要是用FloatToText這一個函式(在同一個檔案),
不過這一個函式可是用了一堆asm碼,要花點時間才能搞清楚…… 人苦於不知足,
既得隴復望蜀。
------
人苦於不知足, 既得隴復望蜀。 |
jessechan
版主 ![]() ![]() ![]() ![]() ![]() 發表:109 回覆:394 積分:254 註冊:2002-04-05 發送簡訊給我 |
引言: 請問一下是否有可能看到FloatToStr()的內部程式碼 因為小弟想要偵測實數中有多少個字元 但是並不包含負號與小數點, 要不然直接用FloatToStr().Length()就好啦 所以我想要參考一下FloatToStr()是怎麼寫出來的 假如有先進有些點子或是知道如何看到函式的內部程式碼的話 麻煩點一下小弟 謝謝!我的建議是除非你想練功, 不然要達成你的需求去看 source code 實在太誇張了, 你覺得這樣好不好? int i, j = 0; AnsiString asTemp = FloatToStr(fSource); for (i = 0;i
------
Jesse Chan |
marky1
一般會員 ![]() ![]() 發表:17 回覆:29 積分:9 註冊:2003-03-19 發送簡訊給我 |
首先感謝三位先進(dllee、BABM、jessechan)..^^
三位先進絲毫不吝嗇的熱心協助令小弟感動不已..
小弟學習到:
1.不能死腦筋地只想某一種方法,解決問題的方法不只有一種,別的方法更快更
省力。
2.應用已知的知識來求解出問題會較有效率,而且充足利用到既知的知識。 另外dllee法似乎不能處理小數點後面,但還是感謝。也感謝BABM先進,您讓小弟學習到若要看到內部程式碼可使用「搜尋方式」;其實小弟也有想過,不過我一直幻想著bcb可以像vc++那樣用「trace方式」就可看到內部程式碼,不好意思我想太多了... 小弟自己也有想出一拙法,如下:
int iCnt = 0; double dSource = -789491.461569; AnsiString asTemp = FormatFloat("0.000", dSource); char *ch = asTemp.c_str(); while(*ch != '\0') { if(*ch >= '0' && *ch <= '9') iCnt ; *ch ; } Edit1->Text = asTemp; Edit2->Text = IntToStr( iCnt ); |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |