如何在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.Round1 作为第二个参数来实现此目的,这是要四舍五入的位数。

您验证这在这个 .NET 小提琴中是否有效:http://dotnetfiddle.net/9bV0HA

【讨论】:

以上是关于如何在c#中对以空格分隔的数字进行舍入?的主要内容,如果未能解决你的问题,请参考以下文章

在 PowerShell 单行中对数字进行舍入

如何在 PL-SQL 中舍入数字?

在 Python 2 中使用逗号分隔符格式化数字并舍入到小数点后 2 位?

在我的 XCode 4.5 项目中对以红色显示的框架进行故障排除

Django:如何在 Postgresql 中对日语(多字节字符串)进行全文搜索

如何使用scanf读取以空格分隔的数字