該如何判斷與VB函數"Clng"相同的資料格式 |
答題得分者是:st33chen
|
rany
一般會員 發表:15 回覆:26 積分:8 註冊:2007-05-05 發送簡訊給我 |
以下是VB的原始code的寫法,因為clng的函數特性是會將它轉換成最接近的偶數值。例如,0.5 轉換成 0,1.5 轉換成 2。 不知Delphi裡是否有類似的函數呢? 又或是請各位大大幫我看看我的程式該如何修改?謝謝大家!! Sub Insert_opd()..... EMRT_W = clng(odd("ODD_EMRT")) IF odd("XFE_MTRM") = "RA" THEN IF odd("ODD_PKND") = "N" THEN EMRT_W = EMRT_W - clng(odd("XFE_MLTN")) ELSE EMRT_W = EMRT_W - clng(odd("XFE_MLTL")) END IF END IF Aj = round (clng(odd("ODD_PQTY")) * clng(odd("ODD_PONT")) * EMRT_W / 100) END Sub 以下是我Delphi的程式部份,因為有函數進位問題所以我在程式部分寫在SQL直接計算 如果把Clng的部份改成"FLOOR"這個函數,但是如果遇到0.5則會轉換成0,遇到1.5則會轉換成1,與VB的Clng特性不一樣 SELECT OPDTODDF.*, XFE_MTRM, XFE_MLTL, XFE_MLTN, CASE WHEN ODD_PKND = 'N' THEN ROUND(ODD_PQTY * ODD_PONT * (ODD_EMRT - XFE_MLTN) / 100) ELSE ROUND(ODD_PQTY * ODD_PONT * (ODD_EMRT - XFE_MLTL) / 100) END AS EMRT_RA, ROUND(ODD_PQTY * ODD_PONT * ODD_EMRT / 100) AS EMRT_W FROM OPDTODDF, OPDMXFEE WHERE ODD_CODE = XFE_CODN AND ODD_CECT = 'N' IF Query.FieldByName('XFE_MTRM').AsString = 'RA' THEN
Aj :=Query.FieldByName('EMRT_RA').AsInteger ELSE Aj :=Query.FieldByName('EMRT_W').AsInteger; |
小傑克
資深會員 發表:5 回覆:209 積分:357 註冊:2009-02-16 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您們好,
vb 的 clng function 我查到的結果是 把數字轉成長整數 (long) 型. 若帶有小數的話會做4捨5入 問題是, 當小數正好為 0.5 時, 他會看整數部份的值, 如果是 偶數, 捨位 如果是 奇數, 進位 (這效果看起來是 "4捨5入" 到 偶數) 注意, 是當小數部份正好為 0.5 時才是如此, 好像不是 clng 不管任何值都會"4捨5入" 到 偶數哦 參考一下 又 我在 D6 查到的 ROUND 是 : If X is exactly halfway between two whole numbers, the result is always the even number. This method of rounding is often called "Banker's Rounding" 邏輯好像一樣, 可以直接用 delphi 的 round 看看
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
小傑克
資深會員 發表:5 回覆:209 積分:357 註冊:2009-02-16 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
哈哈, 我也常常看到題目字面就回答了, 如果算丟臉的話, 那我丟臉的次數可多著呢.
大家加油. 尤其是中華棒球隊, 下一回絶對不可再丟臉了 . ===================引 用 小傑克 文 章=================== 哎呀,上次寫VB已經是8,9年前的事....一下子沒注意, 光看問題字面回答,這次丟臉了 ><" 如樓上st33chen的說明 , round 是可以達成的 ===================引 用 小傑克 文 章=================== 你是不是走火入魔了..... 這個可以回歸簡單的算術解決....別想太多 Y := Round( X / 2) * 2 ;
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
rany
一般會員 發表:15 回覆:26 積分:8 註冊:2007-05-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |