конвертировать long как varchar в db в тип long - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть номер в базе данных, например, 733.25, который хранится как varchar в mssql.

Устройство чтения данных будет считывать его как строковый объект "733.25"

Как я могу преобразовать его в long(int64)?

Int64.Parse возвращает ошибку

(long) Convert.ToDecimal возвращает "73325"

Спасибо

Ответы [ 4 ]

3 голосов
/ 08 декабря 2011
  1. В .NET обязательно используйте InvariantCulture.

    decimal d = Convert.ToDecimal("733.25", CultureInfo.InvariantCulture);
    

    Дополнительная информация: MSDN: Использование свойства InvariantCulture

  2. В T-SQL вы можете привести это в своем запросе.

    SELECT cast('733.25' as float)
    

    Дополнительная информация: MSDN: CAST и CONVERT (Transact-SQL)

Обе приведут к 733.25.

надеюсь, это поможет

1 голос
/ 08 декабря 2011

Вы можете проанализировать значение, как показано ниже

double.Parse(Value);
0 голосов
/ 08 декабря 2011

Вы можете использовать Преобразование и преобразование T-SQL с оператором SQL.

SELECT CAST(CONVERT(decimal, strColumn1) AS bigint) From TableName
0 голосов
/ 08 декабря 2011

Я думаю, что вы после кода, как это:

string val = "733.25";

long longVal = (long)decimal.Parse(val);

// longVal will now contain the value you want

Вы должны проанализировать значение как десятичное перед преобразованием в long (что приводит к падению десятичных разрядов). Обратите внимание, что при этом вы теряете точность, поэтому вам необходимо явное преобразование.

...