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

請問如何將integer轉為double

尚未結案
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-14 22:55:48 IP:61.221.xxx.xxx 未訂閱
這個問題的原因是因為要使用千分位逗號的關係, 但是 %n 又僅能接受浮點數, 所以才有這樣的怪問題, 目前弟的作法是利用加上 0.0 就可以解決了, 這樣會強迫轉型為浮點數, 但是有沒有更好的作法, 可以提供給小弟... < class="code"> Format('%.n',[123456 + 0.0]); //.... // var a: integer; s: string; begin a:=123456; s:=Format('%.n',[a + 0.0]); end;
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-14 23:00:57 IP:218.16.xxx.xxx 未訂閱
s:=Format('%.n',[a/1]); 補充一下,這只是我慣用的方法,軟能跟你的應是沒差。 若你想找一個標準的函數,我想應是沒有的,因為 1. 在 Help 的 "See Also" 通當都會列出相反的函數,但 Int,Round 等將 double 轉 integer 的卻沒有列函數integer轉為double 。 2. 在程式中經常會有計算中的integer轉為double , ,-,* Float 會轉, / 任何數字也會轉,Delphi 對這種自動轉換早已優化,無需要另用函數去轉換。 發表人 - Justmade 於 2003/04/14 23:25:37
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-15 12:46:02 IP:211.76.xxx.xxx 未訂閱
引言: 若你想找一個標準的函數,我想應是沒有的,因為 1. 在 Help 的 "See Also" 通當都會列出相反的函數,但 Int,Round 等將 double 轉 integer 的卻沒有列函數integer轉為double 。 2. 在程式中經常會有計算中的integer轉為double , ,-,* Float 會轉, / 任何數字也會轉,Delphi 對這種自動轉換早已優化,無需要另用函數去轉換。
誠如 Justmade 兄所言, 利用 , -, * 一個浮點數時, 會隱性轉型為浮點數, 用 / 任何數字時, 也會隱性轉型為浮點數, 這是 ok 的, 但是因為 format function 中的第二個參數是 array , 所以傳入的參數是不定的, 因此希望能有一個顯明的 function 來進行轉型, 但是如 Justmade 兄一般, 弟也找過相關的函數是沒有顯明的轉型 function, 也只能延用現在的方法了.. s:=Format('%.n',[a 0.0]); s:=Format('%.n',[a-0.0]); s:=Format('%.n',[a*1.0]); s:=Format('%.n',[a/1]); 以上四式皆同, 弟也測試其執行的效能, 發現幾無差異, 在弟的機器上跑, 一百萬次的時間, 大約都在 1.92 ~ 1.97 秒之間, 沒有一定那個比較快, 所以本題應該是可以結案了, 謝謝 Justmade 兄. ~~
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-04 01:29:20 IP:61.221.xxx.xxx 未訂閱
補充一下, 要加上千分位逗號的功能, 除使用 s := Format('%.n',[123456 0.0]); function Format(const Format: string; const Args: array of const): string; 外, 另外可以使用 s := FormatFloat('#,##0',123456); function FormatFloat(const Format: string; Value: Extended): string; 如此一來, 在 FormatFloat 中的參數傳入數字為整數或是浮點數都不會發生問題, 特別列出來給大家參考~~
系統時間:2024-05-17 0:41:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!