string.Format没有小数位,给出了意外的舍入

Int*_*lue 2 c# string

我需要更新一些现有的代码,以便(有条件地)显示一个没有任何小数位的数字.

使用以下两行取决于是否需要"£"符号.

currency = string.Format(CultureInfo.CurrentCulture, "{0:£#,0.00}", data);
Run Code Online (Sandbox Code Playgroud)

要么

currency = string.Format(CultureInfo.CurrentCulture, "{0:#,0.00}", data);
Run Code Online (Sandbox Code Playgroud)

我尝试更改此代码以使用{0:£#,0}并删除小数位时,"数据"值23699.99舍入为23700而不是23699.

我尝试{0:£#,0}尝试了解发生了什么,并再次将23699.99舍入到23700.

任何人都可以解释为什么会这样吗?

先感谢您.

arx*_*arx 6

格式化数字时,它总是以您选择的精度四舍五入到最接近的数字.例如,如果使用一个小数位格式,则0.86将舍入为0.9,而0.96将舍入为1.0.

类似地,如果您打印时没有小数位,则2​​3699.99将舍入到23700,因为23700是没有小数位的数字,最接近23699.99.

如果要向下舍入使用Math.Floor.