десятичной Я понимаю, что float and real are:Real и число с плавающей точкой длина и точность
типов данных Примерных нумеровать для использования с плавающей запятой числовых данными . Данные с плавающей точкой являются приблизительными; поэтому не все значения в диапазоне могут быть представлены точно.
Однако в следующем примере:
Q1: Почему 'поплавок()' (то есть, реальный) дает больше десятичные чем «поплавок () ' еще менее точный?
Q2: Как хранить @S в числовом поле как это без округления?
declare @s varchar(50) = '34.770438199999944'
select convert(float(24), @s) real_, convert(float(53), @s) float_
Results (скобки, чтобы сделать дифф более ясным)
| real_ | float_ |
------------------------------------
| 34.77043(9147949) | 34.77043(82) |
Можете ли вы объяснить «Меньше точности, потому что у него меньше данных для хранения номера в?»? это о плавании или реальном? – Kaf
хорошо .. любое число с плавающей запятой или нет представлено на нескольких битах. Например, 1 байт = 8 бит. Он может содержать номера от 0 до 255 (2^8 номеров). Если вы перейдете к 2-байтовому номеру, у вас будет 2^16 и так далее. С плавающими точками рассуждения аналогичны, но там число не сохраняется как есть, а как 2 числа на самом деле: значимые цифры и показатель. С помощью этого 2 вы можете приблизиться к очень большому диапазону чисел. Теперь float и real представлены с различным количеством байтов. Float, который имеет более байт, чтобы хранить 2 числа в нем, может хранить данные гораздо точнее. –