C# 使用Decimal.ToString()而不将数字四舍五入

C# 使用Decimal.ToString()而不将数字四舍五入,c#,decimal,C#,Decimal,我有下面的十进制数 string number = "60.9"; Response.Write(Convert.ToDecimal(number).ToString("#,0")); // prints 61 我想将值格式化为9999999。。。但如果该值有小数点,则会向上取整 请告诉我如何打印60.9,而不是使用相同数字格式的61。您可以使用N格式。这将显示您所在区域设置的带组分隔符的数字(,,例如,对于美国区域设置,尽管您可以选择影响该数字),并保留小数部分不变: Convert.ToD

我有下面的十进制数

string number = "60.9";
Response.Write(Convert.ToDecimal(number).ToString("#,0")); // prints 61
我想将值格式化为9999999。。。但如果该值有小数点,则会向上取整


请告诉我如何打印60.9,而不是使用相同数字格式的61。您可以使用
N
格式。这将显示您所在区域设置的带组分隔符的数字(
,例如,对于美国区域设置,尽管您可以选择影响该数字),并保留小数部分不变:

Convert.ToDecimal(number).ToString("N")
更新。在评论中经过一些讨论后,满足所有要求的方法似乎是

Convert.ToDecimal(number).ToString("#,#.##########", CultureInfo.InvariantCulture)

太好了。

等等!这段代码的意义是什么?字符串->十进制->字符串->显示。为什么不显示字符串?为什么有自定义格式的字符串?简单的
ToString()
在任何情况下都可以做你想做的事。是的,这个问题缺少一些重要的信息…@danish:这只是一个示例。我认为如果你使用
decimal.Parse()
然后按你想要的方式打印它可能会更好。
ToString()
这不会保留小数部分。它将按照当前区域性的格式规则的规定精确打印小数位数(这可能意味着2,所以
60.90
)。@Jon,噢,我不知道,谢谢。有没有办法解决这个问题(因为N在其他方面非常接近OP所需要的)?我想您可以设置
NumberFormatInfo
,但这似乎有点开销。在我的情况下,这是可行的,但如果该值没有小数点,例如,对于“1234”,它会打印我不想要的“1234.00”。有什么解决办法吗?@MicrosoftDN:
ToString(“CultureInfo.InvariantCulture”)
。尾随的#数应该是要显示的最大小数位数(如果有更多的小数位数,将进行舍入)。如果你想让所有的小数都显示出来,请随意发送20条。@Andrei:将评论编辑到你的答案中,并保留复选标记。:-)