Delphi5 內附的報表程式 ReportSmith 小數點位數會五捨六入? |
缺席
|
bestlong
站務副站長 發表:126 回覆:734 積分:512 註冊:2002-10-19 發送簡訊給我 |
ReportSmith 大概可以算是古董級的報表程式, 因換了新的工作環境而開發工具使用Delphi5 碰到了這個奇怪的問題, 就是在報表欄位指定 Format Field 的小數點顯示位數時, 原始資料為 0.625 時再指定報表列印至小數點第二位時卻不會進位, 同時剛好有一筆記錄為 0.636 卻會進位顯示 0.64 我看到都傻眼了
不知道有人知道這是否為 ReportSmith 的特性或是Bugs. 我是雪龍
------
http://blog.bestlong.idv.tw/ http://www.bestlong.idv.tw/ http://delphi-ktop.bestlong.idv.tw/ |
shieh2700
高階會員 發表:0 回覆:127 積分:100 註冊:2002-06-13 發送簡訊給我 |
引言: ReportSmith 大概可以算是古董級的報表程式, 因換了新的工作環境而開發工具使用Delphi5 碰到了這個奇怪的問題, 就是在報表欄位指定 Format Field 的小數點顯示位數時, 原始資料為 0.625 時再指定報表列印至小數點第二位時卻不會進位, 同時剛好有一筆記錄為 0.636 卻會進位顯示 0.64 我看到都傻眼了 不知道有人知道這是否為 ReportSmith 的特性或是Bugs. 我是雪龍使用 Delphi 的 Round 函數得出來的結果都會是這樣, 它採用的方式是四捨六入, 五就看運氣. 若進位之後的結果為雙數則進位, 反之則捨去. 可作個小實驗: ShowMessage(FloatToStr(Round(2.5))); => 結果為 2 ShowMessage(FloatToStr(Round(3.5))); => 結果為 4 ShowMessage(FloatToStr(Round(4.5))); => 結果為 4 ShowMessage(FloatToStr(Round(5.5))); => 結果為 6 以機率的角度來看, 這樣的方式反倒比較精確, 若不能接受這樣的結果... 自己寫一個吧! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |