![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 Lak ![]()
![]() ![]() |
一追究之下,才發現..原來..在 VBScript 中的 Round,不是我們想像中的 Round.. 根據他們的說法,Round 在 n.5 的情況下,會發生一些靈異的狀況,而也就是因此, 他們的程式出現了一些 Bug,而也由於不了解這個 bug 是產生原因,因此花了很大的功夫在 debug 上面, 最後才發現是 Round 出了問題。 阿我那個無聊的耳朵,就那麼不小心的聽到他們的談話,心中不免有了個 OS .. 如果真的是 bug ..那也太誇張了吧?VBScript 的 Round 這麼常會被使用到的函式,可能放著 bug 不去修正嗎? 於是便上了網,查了一下資料,原來,Round 還真的不是那麼簡單的 最接近參數 d 的整數。如果 d 正好為兩個整數的中間數 (一個為偶數,另一個為奇數),則會傳回偶數。這是所謂的銀行家四捨五入法(Round-To-Even),也叫做Bankers' Rounding 節錄自:http://blog.darkthread.net/blogs/darkthreadtw/archive/2007/06/15/kb-net-math-quiz.aspx 這是一段在網路上看到的文字,應該是自 MSDN 中翻譯出來的,感謝這位老大哥把這東東提出來談。 而由上面的文字我們可以了解到,在使用 VBScript 的 round 時,應該還要自行加一堆有的沒有判斷式, 來確保你的 Round 是正常的動作,但是在 JavaScript 的 Math.round() 下卻不會出現這個問題, 基於程式人員的「偷懶最高指導原則」,所以便利用 JavaScript 寫下了一個讓 VBScript 呼叫的 round 函式, 下面是這個想法的實做。
== 簽名檔 ==
By Lak Web Site: Lak4CYUT.blogspot.com |