如何将字符串转换为带小数点后3位的十进制数?

时间:2015-06-10 11:02:39

标签: c# .net

string num = 23.6;

我想知道如何将其转换为带小数点后3位的十进制数 像

decimal nn = 23.600 

有什么方法吗?

4 个答案:

答案 0 :(得分:6)

我尽我所能..

首先,您的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.6023.60023.6000000000023.6M完全相同,对吧?无论你将它解析为十进制,你都会得到与调试器中23.600相同的值。看起来这些不是是真的。请参阅Jon Skeet对此答案的评论以及他在Decimal floating point in .NET文章中的“保留零”部分。

现在怎样?是的,我们需要将它的文本表示为string str = nn.ToString("F3", CultureInfo.InvariantCulture); // 23.600 。由于我们在文本表示中只需要小数分隔符,The "F" Format Specifier将满足需要。

titles

答案 1 :(得分:3)

这里有两个不同的概念。

  1. 查看
  2. 您可以使用 1 的值,并将其视为 1.0 1.0000 +000001.00 。< / p>

    你有字符串 23.6 。您可以使用var d = decimal.Parse("23.6")

    将其转换为十进制

    现在您的值等于 23.6 ,您可以使用d.ToString("F3")

    将其视为 23.600

    你可以read more about formatting decimal values

答案 2 :(得分:0)

在我的情况下对我有用的东西是num.ToString(“#######。###”)

答案 3 :(得分:-2)

十进制不是字符串,它不显示尾随零。如果你想要一个显示3个小数位的字符串,包括尾随零,你可以使用string.Format:

decimal nn= 23.5;
var formattedNumber = string.Format("{0,000}", nn);