如何在c#中用空格分隔数字?

时间:2014-01-20 10:17:00

标签: c# rounding number-formatting

我有一个以下格式的数字:

string num = "66 277";
Double n = Double.parse(num);

string num1 = "108 577";
Double n1 = Double.parse(n1);

现在我希望在从字符串转换为double后对这些数字进行舍入。

我使用Math.Round()方法,但它给出了“无效的数字格式异常”。然后我用“。”(66.277& 108.577)替换了“空格”并使用了:

n = Math.Round(n,2);
n1 = Math.Round(n1,2);

这将返回n = 66.28和n = 108.58。

我希望输出为n = 66.3和n1 = 109。

我该怎么做?另外,建议我是否有一种方法可以不需要删除空格并直接对值进行舍入。

1 个答案:

答案 0 :(得分:4)

您可以使用以下代码执行此操作:

string num = "66 277";
Double n = Double.Parse(num, new NumberFormatInfo { NumberDecimalSeparator = " "});
Double nRounded = Math.Round(n, 1);

string num1 = "108 577";
Double n1 = Double.Parse(num1, new NumberFormatInfo { NumberDecimalSeparator = " " });
Double n1Rounded = Math.Round(n1, 1);

让我解释一下这是做什么的。您的第一个要求是使用空格作为小数分隔符。您可以通过使用Double.Parse类的新实例调用IFormatProvider实例中的NumberFormatInfo重载来更改此设置。此类有一个名为NumberDecimalSeparator的属性,您可以将其设置为您喜欢的任何字符串。在您的情况下,您可以将其设置为空格。

第二部分是你想要舍入到一个小数。您可以通过使用Math.Round作为第二个参数调用1来实现此目的,该参数是要舍入的位数。

您验证这适用于此.NET小提琴:http://dotnetfiddle.net/9bV0HA