線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:958
推到 Plurk!
推到 Facebook!

哪邊錯了?

缺席
bluechanel
一般會員


發表:7
回覆:15
積分:4
註冊:2003-03-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-21 01:04:14 IP:218.165.xxx.xxx 未訂閱
int count() { .......... int real; ...........計算........ return real; } //------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { if (Edit1->Text.IsEmpty()) Edit1->Text=0; int kkk; ................ ............... int xxx=count(); kkk=xxx * StrToInt(Edit1->Text) /100; Label1->Caption=IntToStr(kkk); } 編譯可以過 但為何總是數值和正解不一樣呢?! 而且數字還一直跳動..... 哪邊錯了嗎? 我知道問題出在count() 但我C 的觀念還蠻弱的 看不出哪邊錯誤~ 教我一下吧 感恩~ 發表人 - bluechanel 於 2003/03/21 01:05:54
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-21 01:09:10 IP:61.221.xxx.xxx 未訂閱
引言: int count() { .......... int real; ...........計算........ return real; } //------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { if (Edit1->Text.IsEmpty()) Edit1->Text=0; int kkk; ................ ............... int xxx=count(); kkk=xxx * StrToInt(Edit1->Text) /100; Label1->Caption=IntToStr(kkk); } 編譯可以過 但為何總是數值和正解不一樣呢?! 而且數字還一直跳動..... 哪邊錯了嗎? 我知道問題出在count() 但我C 的觀念還蠻弱的 看不出哪邊錯誤~ 教我一下吧 感恩~
bluechanel 你好: 你的目的是什麼呢?? 沒有寫清楚喔< > 如果沒有把目的描述清楚,又只有片段的程式碼 很難知道該如何幫你的,所以,我猜~~你是想要求百分比吧??< > 試試把這一行改成以下這樣看看 kkk=(int)((double)xxx*(double)StrToInt(Edit1->Text)/(double)100); -- Enjoy Researching & Developing -- 發表人 - RaynorPao 於 2003/03/21 01:33:00
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-21 01:14:07 IP:61.59.xxx.xxx 未訂閱
bluechanel您好:  
引言:編譯可以過 但為何總是數值和正解不一樣呢?! 而且數字還一直跳動.....
(1) 您可以善用Debug工具來check您的結果 ( >
bluechanel
一般會員


發表:7
回覆:15
積分:4
註冊:2003-03-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-21 01:40:11 IP:218.165.xxx.xxx 未訂閱
>.< 還是不行ㄟ!! 問題一定是在count()上 //cout()是用來將某記憶體位址讀出某值,並傳回! 我之前都測試過了 Label1->Caption=IntToStr(count()); //這樣可以顯示出正確的數值~ 但只要把它移出IntToStr(count())計算,就一定出錯了! 如: 我上面寫的那樣,不管是把它賦予給某個變數,還是再作運算 都是錯~ 我是想知道 是不是我count的用法用錯了? 要先把它轉換成什麼形式才能運算 或是???!! 謝謝大家了....
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-21 11:01:49 IP:203.73.xxx.xxx 未訂閱
引言: >.< 還是不行ㄟ!! 問題一定是在count()上 //cout()是用來將某記憶體位址讀出某值,並傳回! 我之前都測試過了 Label1->Caption=IntToStr(count()); //這樣可以顯示出正確的數值~ 但只要把它移出IntToStr(count())計算,就一定出錯了! 如: 我上面寫的那樣,不管是把它賦予給某個變數,還是再作運算 都是錯~ 我是想知道 是不是我count的用法用錯了? 要先把它轉換成什麼形式才能運算 或是???!! 謝謝大家了....
bluechanel 你好: (1)麻煩一下~~請不要再自言自語了 ( > --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
arnoyu
中階會員


發表:73
回覆:88
積分:67
註冊:2003-03-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-21 11:28:19 IP:61.56.xxx.xxx 未訂閱
>> int kkk; >> ................ >> ............... >> int xxx=count(); >> kkk=xxx * StrToInt(Edit1->Text) /100; >> Label1->Caption=IntToStr(kkk); 以下為個人拙見... kkk 及 xxx 被宣告為整數 如果 user在 Edit1 輸入 1234 套入 kkk=xxx * StrToInt(Edit1->Text) /100; kkk=xxx * 1234/100 設 xxx 為 22 kkk= 22 * 12.34 因 kkk 被宣告為整數 所以 kkk=264 小數將被刪去 懷疑原因: kkk 及 xxx 被宣告為整數 所以許多小數後面的值都被刪去,有時有進位有時無 所以你所提到: >> 而且數字還一直跳動..... 我猜大概是這個原因吧~~ 因此建議 kkk 及 xxx 宣告為浮點數或倍精度浮點數 ===以上為個人拙見...如答非所問,請勿怪偶啦~~ ===
bluechanel
一般會員


發表:7
回覆:15
積分:4
註冊:2003-03-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-21 14:28:02 IP:218.165.xxx.xxx 未訂閱
昨天發現用這樣可以解決 所以我自己回答好了 :p 應該也不是進位的問題,使數值跳動的~ AnsiString kkk=IntToStr(count()); int xxx=StrToInt(kkk); int ttt=xxx * (StrToInt(Edit1->Text))/ 100; Label1->Caption=ttt; //還是感謝大家的幫忙!!
系統時間:2024-04-24 15:16:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!