将数字转换为字符串的好方法,删除小数点?

时间:2010-01-07 18:01:57

标签: c# sql-server-2005 string numeric

我必须处理一个数值(来自SQL Server 2005数字列),我需要将其转换为字符串,但必须删除小数点。数据本身可以通过DataTable / DataRow在C#中访问。

例如,如果SQL Server列读取12345.678,则完成所有操作后字符串应为“12345678”。是否有可能指出我这方面的好方法?也许有一个.Net转换方法可以做到这一点,我不确定。

谢谢!

7 个答案:

答案 0 :(得分:4)

有几种可能的方法。您可以使用特定文化将其转换为字符串,以便确定该句点用作小数分隔符,然后删除句点:

string s = num.ToString(CultureInfo.InvariantCulture).Replace(".", String.Empty);

您可以使用更多数值方法将valye乘以10,直到没有小数:

while (num != Math.Floor(num)) num *= 10.0;
string s = ((int)num).ToString();

答案 1 :(得分:3)

这样的东西
var numberWithPoint = dbGetNumber();

string numberWithOutPoint = numberWithPoint.ToString().Replace(".", string.Empty);

它快速而且肮脏,但它可以相当简单地完成工作。

答案 2 :(得分:2)

你可以在c#中这样做:

var myNum = 12345.678;
var myString = myNum.ToString().Replace(".","");

在sql server中,您可以这样做:

SELECT REPLACE( cast(myCol as varchar), '.', '') as FormattedNumber 
FROM ...

答案 3 :(得分:2)

怎么样:

// using System.Globalization;
SqlCommand cm = new SqlCommand("SELECT 12345.678 as decimal");
// ...
SqlDataReader dr = cm.ExecuteReader();
if(dr.Read())
{
    string value = dr.GetValue(0).ToString()
        .Replace(NumberFormatInfo.CurrentInfo.NumberDecimalSeparator, "")
}

答案 4 :(得分:1)

一种直接的方法是使用

string result = original.Replace(".", "")

可能有一个更快的方法,但如果这不是一个紧密的内循环,替换应该工作正常。

编辑:固定代码示例,加上:

要解决文化问题,可以使用NumberFormatInfo.NumberDecimalSeparator来确定当前定义的小数分隔符。

答案 5 :(得分:1)

但通常当它来自sql server时,你不应该先将它转换为字符串而不是整数/ double,而是直接将它从行[“column1”]中的对象转换为所需的值,这样可以省去处理文化的麻烦并稍微提高性能

答案 6 :(得分:1)

string result = Regex.Replace(original,“[^ 0-9]”,“”);