Не использовать поплавки для хранения данных с фиксированной точностью и требуемой точностью.
В этом примере показано, как правильно преобразовать число с плавающей точкой в NVARCHAR (50), а также показано, почему не рекомендуется использовать числа с плавающей точкой для точных данных.
create table #f ([Column_Name] float)
insert #f select 9072351234
insert #f select 907235123400000000000
select
cast([Column_Name] as nvarchar(50)),
--cast([Column_Name] as int), Arithmetic overflow
--cast([Column_Name] as bigint), Arithmetic overflow
CAST(LTRIM(STR([Column_Name],50)) AS NVARCHAR(50))
from #f
выход
9.07235e+009 9072351234
9.07235e+020 907235123400000010000
Вы можете заметить, что второй вывод заканчивается на «10000», хотя данные, которые мы пытались сохранить в таблице, заканчиваются на «00000». Это связано с тем, что float
тип данных имеет фиксированное число поддерживаемых значащих цифр, которое не распространяется так далеко.