哪邊錯了? |
缺席
|
bluechanel
一般會員 發表:7 回覆:15 積分:4 註冊:2003-03-10 發送簡訊給我 |
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 發送簡訊給我 |
引言: 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 發送簡訊給我 |
|
bluechanel
一般會員 發表:7 回覆:15 積分:4 註冊:2003-03-10 發送簡訊給我 |
>.< 還是不行ㄟ!!
問題一定是在count()上 //cout()是用來將某記憶體位址讀出某值,並傳回!
我之前都測試過了
Label1->Caption=IntToStr(count()); //這樣可以顯示出正確的數值~
但只要把它移出IntToStr(count())計算,就一定出錯了!
如:
我上面寫的那樣,不管是把它賦予給某個變數,還是再作運算
都是錯~
我是想知道 是不是我count的用法用錯了?
要先把它轉換成什麼形式才能運算 或是???!!
謝謝大家了....
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: >.< 還是不行ㄟ!! 問題一定是在count()上 //cout()是用來將某記憶體位址讀出某值,並傳回! 我之前都測試過了 Label1->Caption=IntToStr(count()); //這樣可以顯示出正確的數值~ 但只要把它移出IntToStr(count())計算,就一定出錯了! 如: 我上面寫的那樣,不管是把它賦予給某個變數,還是再作運算 都是錯~ 我是想知道 是不是我count的用法用錯了? 要先把它轉換成什麼形式才能運算 或是???!! 謝謝大家了....bluechanel 你好: (1)麻煩一下~~請不要再自言自語了 ( > --
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
arnoyu
中階會員 發表:73 回覆:88 積分:67 註冊:2003-03-21 發送簡訊給我 |
>> 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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |