如何处理字符串中的正确零到十进制转换?

时间:2014-06-06 20:19:29

标签: c# .net

在我的网站中,我需要从XML读取数据,其中一些数据是十进制值。 有时价值是正确的:172,59,有时价值就像1.000072,590000,如何将其转换为正确格式的最佳方式:

ps:我需要一个字符串值。

谢谢!

3 个答案:

答案 0 :(得分:2)

您希望他们采用什么格式?等等多少小数?

如果您希望始终为2位小数,请尝试使用标准数字格式,例如:

decimal value = 123.456;
Console.WriteLine("Your account balance is {0:F}.", value);

有关其他常见数字格式化技术,请参阅this MSDN示例。

答案 1 :(得分:1)

你写的是你试过的

string.Format("{0:F}","1.00000");

问题在于您将string传递给函数。数字格式仅适用于数字数据类型。首先将值转换为小数,然后对其进行格式化。

试试这个

public string ReformatDecimalString(string input)
{
    const string formatString = //something
    var decimalValue = decimal.Parse(input);
    return decimalValue.ToString(formatString);
}

当您格式化单个数字值时,使用x.ToString(formatString)string.Format(formatString, x)更有效。但请注意,特定格式字符串在两种情况下会有所不同。

如果您的输入数据有小数点(不是逗号)并且您的计算机文化使用小数点逗号,那么您应该能够使用CultureInfo.InvariantCulture正确解析该值:

var decimalValue = decimal.Parse(input, CultureInfo.InvariantCulture);

答案 2 :(得分:0)

如果我正确地阅读了您的答案,那么您正在尝试将从XML文件中提取的Integer值转换为字符串值 而不会尾随零 (“ps:我需要一个字符串值。“)

此代码:

decimal test = 20.000000m
test.ToString("G29");

可能会做你想要的事情