В следующем запросе
declare @a float(23)
declare @b float(23)
declare @c float(53)
set @a = 123456789012.1234
set @b = 1234567.12345678
set @c = @a * @b
select @c
select LTRIM(STR((@c),32,12))
declare @x decimal(16,4)
declare @y decimal(16,8)
declare @z decimal (32,12)
set @x = 123456789012.1234
set @y = 1234567.12345678
set @z = @x * @y
select @z
Я получаю ответы как
1.52415693411713E+17
152415693411713020.000000000000
152415692881907790.143935926652
Из приведенных выше ответов третий ответ является правильным. Это причина, почему тип данных с плавающей точкой называется Приблизительный числовой тип данных
Или я делаю что-то в корне неправильно.
Кстати, это связано с проблемой, возникшей у меня с устаревшей системой, в которой я должен использовать float в качестве типа данных для хранения, в то же время при вычислении не должно быть потери точности.
Пожалуйста, предложите альтернативы или объяснение.