舍入到某個小數位
回答
回合double
本身喜歡:
Math.Round(0.83333, 2, MidpointRounding.AwayFromZero);
(你應該定義MidpointRounding.AwayAwayFromZero才能得到正確的結果默認此函數使用銀行家四捨五入閱讀更多關於銀行家四捨五入:。http://www.xbeat.net/vbspeed/i_BankersRounding.htm所以你可以看到爲什麼這個不會給你正確的結果)
或只爲兩位小數的顯示值:
myDouble.ToString("F");
或供的#
myDouble.ToString("#.##")
默認值是MidPointRounding.ToEven。這與IEEE標準確認。因此它應該被單獨留下,即默認值。 –
@MilindThakkar它取決於應用程序 - 我看到一家公司擁有自己的計費系統,需要針對不同的供應商提供不同的舍入方案。無論哪種舍入方法*都可以正確,但這是鄧肯知道並選擇的方法。 –
它不是*顯示*值,並將在0.857失敗,將返回0.86和*不* 0.85按OP所要求的: – Tigran
數量確定的任何小數你說顯示爲 - 所以這將是:
var d = value.ToString("f2");
見Standard numeric format strings
如果你真的要調整值降低到2dp,那麼你可以做@middelpat建議的。
double d = 0.833333333333333333;
Math.Round(d, 2).ToString();
這並不總是正確的。看看銀行家的四捨五入:http://www.xbeat.net/vbspeed/i_BankersRounding.htm您應該指定第三個參數MidpointRounding.AwayFromZero – middelpat
@middelpat:標準的方法是.toEven,這是按照IEEE標準是正確的。投票不是理由。 –
嘗試
decimalVar = 0.833333333333333333;
decimalVar.ToString ("#.##");
如果你想看到0.85781..
爲0.85
,最簡單的方法是通過100
倍增,由100
轉換爲int
和鴻溝。
int val = (int)(0.833333333333333333 * 100);
var result = val /100;
它應該產生你正在尋找的結果。
@dowvoter:原因? – Tigran
- 1. c舍入到2位小數位#
- 2. 舍入小數位數
- 3. 將數字舍入到小數位
- 4. 舍入到小數點後一位?
- 5. 在Javascript中舍入到2位小數
- 6. 舍入到小數點後兩位
- 7. JS舍入到2位小數
- 8. 向下舍入到一位小數
- 9. T-SQL舍入到小數位
- 10. Java的舍入到兩位小數
- 11. SQL - 舍入到2位小數
- 12. Fortran - 要舍入到小數點一位
- 13. SQL從小數點後3位舍入到2位小數
- 14. 關於舍入一個值到某個小數點
- 15. 將小數點後的位數刪除到某些數字而不捨入
- 16. 四捨五入到下一個數保留兩位小數
- 17. NHibernate 3.0將小數舍入到5位小數 - 爲什麼?
- 18. 四捨五入到小數點後兩位小數
- 19. 在SQL中將浮點數舍入到2位小數位
- 20. 四捨五入到兩個小數點
- 21. 在C中舍入到十五個小數位以上#
- 22. MS Access四捨五入SQL小數位
- 23. 舍入至少2至4位小數
- 24. 如何取整或舍入小數位?
- 25. 索引小數位的舍入
- 26. 四捨五入高達9位小數
- 27. python下舍入爲2位小數
- 28. 如何在C++中舍入小數位?
- 29. 在hibernate查詢語言中舍入到2位小數位
- 30. BigDecimal舍入到2個小數位,然後到一個有效數字
use string.Format – Zaki
你想得到一個雙或字符串? – 888