數學公式處理 |
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
由於在報表製作或是薪資計算等問題時, user有時希望能更改計算公式, 在不希望安裝任何元件之前題下完成本程式 1. 簡單之使用例
var eq:TEqParser; v:double; begin eq:=TEqParser.createFromStr('a b^2 a*c cos(x) arccos(y)'); //以字串建立equation try v:=eq.calc([2,3,4,0,1]); //依equation中變數出現順序傳入參數完成計算 finally eq.free; end; end;2. 上例也可用變數名稱 eq.Values['a']:=2; eq.Values['b']:=3; eq.Values['c']:=4; eq.Values['x']:=0; eq.Values['y']:=1; v:=eq.calc;3. 所附程式中EQParser.pas 為實際class所在, 其餘僅為測試用 4. 有兩個Constructor,故希望安裝成元件的也可自行安裝 5. 程式剛完成, 測試不足, 有任何問題請通知我 6. Demo中之Tree為檢視equation之結構, 沒有實際用處
附加檔案:23520_EqParser.rar
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 由於在報表製作或是薪資計算等問題時, user有時希望能更改計算公式, 在不希望安裝任何元件之前題下完成本程式 1. 簡單之使用例真是好強的程式喔! 站長也有寫過類似的,但功能沒這麼強! 不錯不錯! 但是發現一個BUG,請見: 不知是否我操作不當造成? ~~~Delphi K.Top討論區站長~~~var eq:TEqParser; v:double; begin eq:=TEqParser.createFromStr('a+b^2+a*c+cos(x)+arccos(y)'); //以字串建立equation try v:=eq.calc([2,3,4,0,1]); //依equation中變數出現順序傳入參數完成計算 finally eq.free; end; end;2. 上例也可用變數名稱eq.Values['a']:=2; eq.Values['b']:=3; eq.Values['c']:=4; eq.Values['x']:=0; eq.Values['y']:=1; v:=eq.calc;3. 所附程式中EQParser.pas 為實際class所在, 其餘僅為測試用 4. 有兩個Constructor,故希望安裝成元件的也可自行安裝 5. 程式剛完成, 測試不足, 有任何問題請通知我 6. Demo中之Tree為檢視equation之結構, 沒有實際用處
------
~~~Delphi K.Top討論區站長~~~ |
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
Wesly
中階會員 發表:14 回覆:103 積分:53 註冊:2002-05-31 發送簡訊給我 |
|
viery
一般會員 發表:19 回覆:11 積分:6 註冊:2002-09-16 發送簡訊給我 |
|
chgtauhan
一般會員 發表:10 回覆:21 積分:6 註冊:2005-07-23 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
我用的方法很詐,就是交給 DB server 來計算
以 SQL Server 為例 DECLARE @X FLOAT DECLARE @Y FLOAT DECLARE @A FLOAT DECLARE @B FLOAT DECLARE @C FLOAT SET @X = :X SET @Y = :Y SET @A = :A SET @B = :B SET @C = :C SELECT @A POWER(@B, 2) @A*@C COS(@X) ACOS(@Y) 搞定 更爽的是,SQL Server 的 ROUND 函數,是國人習慣的「四捨五入」而不是「四捨六入五成雙」
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
編輯記錄
sryang 重新編輯於 2009-08-02 17:29:59, 註解 補充說明‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |