當遇到C#中的標準數字格式字符串時,我遇到了一些非常奇怪的事情。這可能是一個已知的怪癖,但我找不到任何記錄它,我無法找到一種方法來實際得到我想要的。爲什麼C#中的數字格式字符串在未使用小數(F0)時會舍入數字?
我想採取一個數字,如17.929333333333489並格式化它沒有小數位。所以我只想要「17」。但是當運行這個代碼。
decimal what = 17.929333333333489m;
Console.WriteLine(what.ToString("F0"));
我得到這個輸出
18
看着微軟的文檔,它的示例顯示了相同的輸出。
https://msdn.microsoft.com/en-us/library/kfsatb94(v=vs.110).aspx
// F: -195489100.84
// F0: -195489101
// F1: -195489100.8
// F2: -195489100.84
// F3: -195489100.838
這裏是表示奇數問題的代碼示例。
http://csharppad.com/gist/d67ddf5d0535c4fe8e39
這個問題不僅侷限於標準的像「F」和「N」也是自定義的,如「#」。
我該如何使用標準的「F0」格式化程序,而不是將其編號?