получить правильный номер SQL Server - PullRequest
1 голос
/ 01 марта 2011

У меня есть таблица:

id      Number
--------------------
1   61326085092
2   161569087548
3   169193968080
4   208082024640
5   230160816344
6   218557943068

Я объявляю переменную с плавающей запятой:

DECLARE @varible AS FLOAT

когда я устанавливаю переменную с результатом запроса к описанной таблице:

SELECT @variable  =  Number FROM @TableR where ID =  1;

Я получаю: variable: 6.13261e + 010

Так что это раздражает, потому что, когда я вычисляю большие значения, я теряю некоторые числа ... Как мне получитьрезультат как 61326085092, а не 6.13261e+010 Может ли это быть ошибкой преобразования varchar-float?

так например:

DECLARE @var AS FLOAT
set @var = 6.13261e+010 * 6.13261e+010
PRINT LTRIM(STR(@var,32,15))

set @var = 61326085092 * 61326085092
PRINT  LTRIM(STR(@var,32,15))

результаты:

3760890541210000200000.000000000
3760888712711224400000.000000000

очень разные ...

Ответы [ 4 ]

1 голос
/ 01 марта 2011

Вы пытались указать точность, например: см. Здесь

SELECT CONVERT(varchar(100), CAST(@testFloat AS decimal(38,2)))

или

SELECT STR(@testFloat, 38, 2)
0 голосов
/ 01 марта 2011

Вы не теряете цифры, скорее программа, отображающая число, форматирует его в сокращенную версиюВы используете Query Analyzer?Если вы хотите, чтобы он отображался со всеми числами, вы должны привести его к строке.

0 голосов
/ 01 марта 2011

Что вы используете для отображения результатов запроса? Мне кажется, что сам набор результатов правильно возвращает количество с плавающей запятой, но то, что форматирует / отображает результаты, конвертирует его в научную запись - метод, который вы должны использовать, чтобы избежать этого, зависит от того, что вы используете (например, C #?)

0 голосов
/ 01 марта 2011

Вы использовали BigInt?Кстати, каков тип данных вашего поля 'Number'?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...