如何在c#中对以空格分隔的数字进行舍入?
Posted
技术标签:
【中文标题】如何在c#中对以空格分隔的数字进行舍入?【英文标题】:How to Round a number separated by space in c#? 【发布时间】:2014-01-20 10:17:00 【问题描述】:我有一个如下格式的号码:
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。
我该怎么做?另外,如果有一种方法我不需要删除空格并直接将值四舍五入,请建议我。
【问题讨论】:
【参考方案1】:您可以使用以下代码执行此操作:
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
【讨论】:
以上是关于如何在c#中对以空格分隔的数字进行舍入?的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 2 中使用逗号分隔符格式化数字并舍入到小数点后 2 位?
在我的 XCode 4.5 项目中对以红色显示的框架进行故障排除