全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:888
推到 Plurk!
推到 Facebook!

400被DELPHI处理成为544.12.是不是DELPHI的BUG

尚未結案
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-30 11:15:26 IP:218.5.xxx.xxx 未訂閱
我用的是DELPHI7. 我程序的代码如下: procedure TForm1.Button1Click(Sender: TObject); var vdreal:real; begin vdreal:=0; vdreal:=vdreal strtofloat(trim(edit1.text)); label1.Caption:=formatfloat('0.00',vdreal); label2.Caption:=SmallToBig(vdreal); end; 这是一个测试程序,FORM上有一个EDIT1用于输入数值,一个LABEL1用于保存转换后的结果. 在用户的机器上测试时,在EDIT1输入'400',结果在LABEL1显示出来的是'544.12',如果输入'400.01',显示'544.13',但是如果输入'123','654'都不会有问题.换另一台机器测试400,400.01,也没有问题. 是DELPHI的BUG还是操作系统的问题,比如设置不当或中毒了.大家帮我分析一下.
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-30 15:10:21 IP:221.226.xxx.xxx 未訂閱
是你机器的问题吧,测试过了,没问题的。
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-02 10:22:04 IP:210.69.xxx.xxx 未訂閱
測試正常, 是否其他程式碼干擾了 ? 還是系統當時有問題 ? Reboot 看看是否正常 ********************* 如果您滿意答案,請結案 *********************
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-08 11:00:50 IP:218.5.xxx.xxx 未訂閱
谢谢两个仁兄,在我自已的机器上没有问题,而且我的软件已在至少十几个用户哪里使用了三年以上,还是第一次有用户返回出现这个错误,并且只在一台机器上出现,我首先想到一定是与系统有关,要么中毒了,要么系统有什么问题.但是领导非要我检查清楚是具体是什么原因,采取什么措施能解决(不重装系统),所以才请教大家,看有谁遇到这个问题. 特别说明一下: 前面贴出的代码,是根据我软件处理方式写的一个简单的测试程序,目的在排除软件复杂的处理流程,以便检查错误原因. 还有REBOOT后错误现象仍然存在.
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-09 13:46:04 IP:210.69.xxx.xxx 未訂閱
如果最快的作法是 重新安裝, 那就重新安裝, 而不是一定要找出問題才行 Windows 有一堆 Bug, 那是否要等微軟將 bug 除盡才開始用 Windows Delphi 也有一堆 Bug, 那是否要等 Borland 將 bug 除盡才開始用 Delphi ********************* 如果您滿意答案,請結案 *********************
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-12 09:44:27 IP:218.5.xxx.xxx 未訂閱
重新安装系统我也试过,原来用户使用WIN2003,重装后是WINXP,但测试时发现错误一样出现. 据了解,用户机器的CPU是AMD Athlon(tm) XP 1700 ,开始怀疑是这种CPU浮点运算方面有BUG,但换到其他同样型号或类似型号的几台机器上却没有问题. 我们又怀疑是REAL类型的原因(这个类型好象是不推荐使用的),但换成DOUBLE,Extended,Comp都发生同样错误,但Currency却没错. 进一步测试发现,real,DOUBLE,Extended,Comp如果用FormatFloat,Format处理会出错,但如果我用下面的方法处理就不会: function TForm1.iFormatFloat(vdreal:real):string; var vdtmp:int64; vstmp: string; begin vdtmp := Trunc((vdreal 0.005)*100); vsTmp := IntToStr(vdTmp); vsTmp := Copy(vsTmp, 1, Length(vsTmp) - 2) '.' Copy(vsTmp, Length(vsTmp) - 1, 2); result := vsTmp; end; 并且如果是Currency类型,我们用的是formatcurr,而不是FormatFloat,所以我开始怀疑是不是FormatFloat的问题.但无法解释可能是什么原因. 另外说明一下: 不是所有数据都会出错,经测试只在289-432范围内,数值转换成字符串时都增加了144.115188075856. 如果您有兴趣,就来探讨一下,发表您的看法,谢谢!
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-05-12 10:30:03 IP:61.218.xxx.xxx 未訂閱
如果你有使用format,formatcur,FormatFloat等指令,那麼要注意,這個指令會因為系統的設定而有不同的結果.在控制台裡->地區選項,裡有數字及貨幣的小數點符號及位數的設定.如果這裡的小數點設成0,那麼即使你用formatfloat指令改成有兩位小數,執行結果仍然會四捨五入到整數.你可以chekc一下控制台的設定
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-05-12 14:09:54 IP:218.5.xxx.xxx 未訂閱
谢谢change.jian兄给我提供了一个很有用的信息, 但是这不能解释这个BUG,因为,一开始我就怀疑与系统设置有关,电话里要求用户查看系统的区域设置,并与我的系统设置对照,没有发现有不同之处,并且重装系统后再做测试也出错,用户说明在重装系统后只安装QQ以方便与我们沟通.
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-05-12 15:34:17 IP:61.218.xxx.xxx 未訂閱
to fangwy: 1.理論上,同一段程式碼,不可能有兩種執行結果.如果只有單一台電腦有問題,那應該可以把範圍縮小在該台電腦上.不管是硬體還是軟體有問題.    2.如果所作業系統重灌,問題仍然存在,那麼試著檢查一下硬體有沒有問題,執行其他有浮點運算的程式是否都正常(如果你一定要找到問題所在的話)    3.把你的source code,拿到另外一台電腦compiler試試.之前曾經發現,同樣的source code,不同的機器,compiler出來的執行檔不一樣...    4.個人建議:不要浪費時間在這個上面.說服user,就是那台電腦的問題,別台電腦都正常,讓user換一台電腦最快    
引言: ??change.jian兄?我提供了一?很有用的信息, 但是?不能解???BUG,因?,一?始我就怀疑与系??置有?,??里要求用?查看系?的?域?置,并与我的系??置?照,?有??有不同之?,并且重?系?后再做??也出?,用??明在重?系?后只安?QQ以方便与我??通.
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-05-13 10:40:50 IP:218.5.xxx.xxx 未訂閱
谢谢change.jian兄,您提出的第三点值得注意.这个问题到了结案的时候了,昨天已经说服用户换一台电脑使用.因为从软件角度应该所有可能都考虑了. 把这个问题拿出来讨论,也是想集思广意,以免遗漏可能存在的问题.
系統時間:2024-06-08 9:20:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!