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

數學公式處理

 
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-04 10:41:20 IP:61.219.xxx.xxx 未訂閱
由於在報表製作或是薪資計算等問題時, 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-04 12:19:42 IP:192.168.xxx.xxx 未訂閱
引言: 由於在報表製作或是薪資計算等問題時, 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之結構, 沒有實際用處
真是好強的程式喔! 站長也有寫過類似的,但功能沒這麼強! 不錯不錯! 但是發現一個BUG,請見: 不知是否我操作不當造成? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-04 13:10:08 IP:61.219.xxx.xxx 未訂閱
但是發現一個BUG,請見: arccos之參數為5當然是invalid floating (須在 -1到 1 之間)
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-04 13:36:07 IP:192.168.xxx.xxx 未訂閱
引言: 但是發現一個BUG,請見: arccos之參數為5當然是invalid floating (須在 -1到 1 之間)
Sorry,未詳察arccos()函式! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
Wesly
中階會員


發表:14
回覆:103
積分:53
註冊:2002-05-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-24 11:55:02 IP:211.22.xxx.xxx 未訂閱
感謝ccchen的這個元件,可使我的程式更加好維護。 但因個人之需求,小弟提出一個小小的建議,就是更新公式時,是否能將VarList清空重新取得新的參數? 另外再增加一個參數表, 可使程式更加方便, 雖然我可以由VarList取得參數名稱。 再次感謝您無私的提供此一元件。
viery
一般會員


發表:19
回覆:11
積分:6
註冊:2002-09-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-30 18:09:29 IP:218.81.xxx.xxx 未訂閱
可否将程式再扩展一下,来解析条件判断语句。如if else 那就更完美了。
chgtauhan
一般會員


發表:10
回覆:21
積分:6
註冊:2005-07-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-07-31 17:47:39 IP:202.76.xxx.xxx 訂閱
为什么下载不到的呢?
show that high security
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-08-02 17:24:15 IP:124.10.xxx.xxx 訂閱
我用的方法很詐,就是交給 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, 註解 補充說明‧
系統時間:2024-11-23 0:13:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!