2016-10-22 1 views

ответ

0

Это связано с природой 32-битных чисел с плавающей запятой. Числа с плавающей запятой начнут терять точность, когда вы попадете в действительно большие числа. Если вы перейдете на 64-битный float, вы получите более высокую точность, и это будет работать для этого числа, но если вы планируете вставлять числа, которые действительно большие, я бы рекомендовал вместо этого использовать целое число.

+0

большое спасибо. но как я могу перейти на 64-битный float. Я не могу найти его в sql. в размере поля значения размера 8 и отключено – Fatemeh

+0

Я бы предложил посмотреть http://stackoverflow.com/a/626904/6623706. Тип данных, который вы хотите изменить, - _real_ – abydal

+0

Большое спасибо. Я изменил его на реальное, но значение в хранилищах данных 1.766554E + 10. Это научный номер. можешь мне помочь? – Fatemeh

0

Вы можете переливается ваш поплавок

Declare @F float = 937687500 

Select AsFloat = cast(@F as varchar(25)) 
     ,AsInt = cast(cast(@F as int) as varchar(25)) 
     ,AsDec = cast(cast(@F as decimal) as varchar(25)) 
     ,AsNum = cast(cast(@F as numeric) as varchar(25)) 

Возвращает

AsFloat   AsInt  AsDec  AsNum 
9.37688e+008 937687500 937687500 937687500 
+0

Большое спасибо – Fatemeh