想知道在Excel上使用Round()函數時應用了哪種舍入方法? 當您選擇將列格式化爲帶有兩位小數的貨幣時,也有不同之處。 我需要在我編寫的C#程序中模擬Excel的結果。MS Excel貨幣舍入方法
回答
注意:Excel和Excel-VBA使用兩種不同的算法。
在Excel:
=ROUND(0.5,0)
返回1
=ROUND(1.5,0)
返回2.
在Excel-VBA:
Print Round(0.5,0)
0
Print Round(1.5,0)
2
VBA使用銀行家的舍入:舍入0.5的至最接近的甚至整數。請注意,如果您將Round
更改爲小數點後的位置,則相同的邏輯將轉換爲低位小數位。例如,Round(0.05,1)
在Excel-VBA中返回零(與Excel中的0.1相反)。
這是我最不喜歡的VBA功能之一。它與Excel不一致使它更糟糕。
數字格式對此問題沒有影響。
謝謝,我不知道這個問題+1。在vba中,我會想象使用WorksheetFunction.Round(myRng,0)可能是保持直線的好選擇嗎? – datatoo
@datatoo:的確,有一點要注意,從VBA訪問Excel的工作表函數會產生一些開銷,如果你舍入*許多數字,會影響性能。但是如果你只用了很少的幾次,那很好,'WorksheetFunction.Round(0.5,0)'將返回1,就像你期望的那樣。 –
另一個可怕的,醜陋的解決方法是'CDbl(格式(0.5,「0」))',即轉換爲字符串使用'格式'(這與'Round'相反,由於某種原因不使用銀行家舍入),然後使用'CDbl'回到'Double'。令人驚訝的是,這比「WorksheetFunction.Round」快!在我的舊機器上,用VBA對1000萬個數字進行舍入處理需要2秒鐘的時間,這個循環是快速的,但是使用愚蠢的銀行家舍入,20秒鐘使用CDbl(格式爲0.5,使用'WorksheetFunction.Round'! –
- 1. 四捨五入貨幣
- 2. 正確的方法在Paypal中進行貨幣換算舍入?
- 3. 舍入貨幣的雙精度值
- 4. Python v2.6向上舍入小數(貨幣)?
- 5. 格式貨幣沒有舍入
- 6. MS CRM數據導入負面貨幣
- 7. 導入Google財務貨幣時停止四捨五入
- 8. Excel Interop貨幣格式
- 9. MS Access VBA格式Excel Sheet列作爲貨幣
- 10. AngularJS貨幣/數字輸出沒有舍入
- 11. 在DT中舍入貨幣格式的數字
- 12. AS3中貨幣四捨五入的不一致
- 13. Java的貨幣面額四捨五入問題
- 14. JQuery的錢/貨幣四捨五入到2位小數
- 15. 四捨五入和存儲只是貨幣
- 16. 忽略hybris commonI18NService round貨幣方法
- 17. 格式化方法中的貨幣?
- 18. UDF方法來確定貨幣或雙
- 19. MS Access查詢將數值從一種貨幣轉換爲另一種貨幣
- 20. Excel舍入VBA
- 21. Magento Fedex送貨方式貨幣
- 22. 根據貨幣代碼將貨幣格式設置爲貨幣
- 23. 貨幣列表與貨幣符號和貨幣名稱母語
- 24. 貨幣輸入的InputNumber?
- 25. AngularJS的貨幣輸入
- 26. 消毒貨幣輸入
- 27. 插入貨幣符號,itextSharp
- 28. 貨幣
- 29. 驗證貨幣輸入的最佳方法是什麼?
- 30. laravel maatwebsite excel出口貨幣行
你自己做過任何測試嗎? –