[英]How to convert string to decimal with 3 decimal places?
string num = 23.6;
我想知道如何将其转换为带小数点后3位的十进制数
decimal nn = 23.600
有什么方法吗?
我尽力了..
首先你的string num = 23.6;
甚至不会编译。 您需要对字符串使用双引号,如string num = "23.6";
如果你想把它作为decimal
,你需要先用一个IFormatProvider
解析它.
作为NumberDecimalSeparator
如InvariantCulture
(如果你的CurrentCulture
使用.
已经,你不必传递第二个参数);
decimal nn = decimal.Parse(num, CultureInfo.InvariantCulture);
现在我们有一个
23.6
作为
decimal
值。
但作为一个值,
23.6
,
23.60
,
23.600
和
23.60000000000
是完全一样的,对不对?
无论您将哪一个解析为十进制,您将获得与调试器中的
貌似这些都不是真实的。 请参阅Jon Skeet对此答案的评论以及他在.NET文章中关于十进制浮点的 “保持零”一节。 23.6M
相同的值。
怎么办? 是的,我们需要将它的文本表示形式设置为23.600
。 由于我们在文本表示中只需要小数分隔符, 因此"F"
格式说明符将满足需要。
string str = nn.ToString("F3", CultureInfo.InvariantCulture); // 23.600
这里有两个不同的概念。
您可以将值设置为1并将其视为 1.0或1.0000或+000001.00 。
你有字符串23.6 。 你可以使用var d = decimal.Parse("23.6")
将其转换为十进制
现在你有一个等于23.6的值你可以通过使用d.ToString("F3")
来查看它像23.600
在我的情况下对我有用的东西是num.ToString(“#######。###”)
十进制不是字符串,它不显示尾随零。 如果你想要一个显示3个小数位的字符串,包括尾随零,你可以使用string.Format:
decimal nn= 23.5;
var formattedNumber = string.Format("{0,000}", nn);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.