如何对c#中以空格分隔的数字进行四舍五入?

如何对c#中以空格分隔的数字进行四舍五入?,c#,rounding,number-formatting,C#,Rounding,Number Formatting,我有一个以下格式的数字: string num = "66 277"; Double n = Double.parse(num); string num1 = "108 577"; Double n1 = Double.parse(n1); 现在,我想在将这些数字从字符串转换为双精度后对其进行四舍五入 我使用了Math.Round()方法,但它给出了“无效数字格式异常”。然后我将“空格”替换为“.”(66.277和108.577),并使用: n = Math.Round(n,2); n1 =

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

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

string num1 = "108 577";
Double n1 = Double.parse(n1);
现在,我想在将这些数字从字符串转换为双精度后对其进行四舍五入

我使用了
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


我该怎么做?另外,建议我是否有一种不需要删除空格的方法,并直接将值四舍五入。

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

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
重载来更改此设置,该重载使用
NumberFormatInfo
类的新实例接收
IFormatProvider
实例。该类有一个名为
NumberDecimalSeparator
的属性,您可以将其设置为任何字符串。在您的情况下,可以将其设置为空格

第二部分是要四舍五入到小数点后一位。您可以通过调用
Math.Round
,将
1
作为第二个参数来实现这一点,该参数是要舍入的位数


您可以验证这在.NET FIDLE中是否有效:

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

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
重载来更改此设置,该重载使用
NumberFormatInfo
类的新实例接收
IFormatProvider
实例。该类有一个名为
NumberDecimalSeparator
的属性,您可以将其设置为任何字符串。在您的情况下,可以将其设置为空格

第二部分是要四舍五入到小数点后一位。您可以通过调用
Math.Round
,将
1
作为第二个参数来实现这一点,该参数是要舍入的位数

您将验证此操作是否在.NET小提琴中有效: