返回列表 上一主題 發帖

[發問] 浮點數運算處理,在VBA 程式中去呼叫WORKSHEET的ROUND

[發問] 浮點數運算處理,在VBA 程式中去呼叫WORKSHEET的ROUND

Dear:
   之前有發問請教論壇的專業高手,得出的語法如附檔
    測試發現用vba
round(4+5)/2=4.5=4
round(4+1)/2=2.5=2

在上面2組這樣的數值搭配無法四捨五入,換成其他數值就都OK四捨五入
用worksheet的 round function
round(4+5)/2=4.5=5
round(4+1)/2=2.5=3

目想到的原因如下:
涉及浮點數運算處理,算9/2在儲存上可能是4.499999999993之類的導致vba round的結果是4,

而worksheet的 round function處理和 vba的不同,

想請問如何在VBA 程式中去呼叫WORKSHEET的ROUND,改寫 附檔的四捨五入的部份語法(讓它可以運算結果與worksheet的 round functionㄧ樣)

可參考
http://www.excelforum.com/excel-programming-vba-macros/401104-worksheet-rounding-vs-vba-rounding.html

謝謝

再麻煩各位大大指教,謝謝

round error_2.rar (110.39 KB)

回復 3# Hsieh
  
     Dear Hsieh 版大 & stillfish00 大大:

    謝謝您們超迅速提供的回應,尤其是 Hsieh 版大,多次打擾真是抱歉,如有造成困擾,真是萬分抱歉,
    也謝謝您如此熱心並持續的予以回應指導,原來vba與worksheet再round指令的計算方式不一樣,再次謝謝您們平日的照顧與指導。
    也謝謝論壇的各位提供一個討論的空間。
    The VBA Round function uses 'Bankers rounding' (half the time the .5 is
rounded up, half the time down).
  The worksheet ROUND() function uses 'normal rounding' (.5 is always rounded
up)

TOP

        靜思自在 : 【時間如鑽石】時間對一個有智慧的人而言,就如鑽石般珍貴;但對愚人來說,卻像是一把泥土,一點價值也沒有。
返回列表 上一主題