我有一个以下格式的数字:
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。
我该怎么做?另外,建议我是否有一种方法可以不需要删除空格并直接对值进行舍入。
答案 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