Как десятичные знаки преобразуются с помощью FLOAT в SQL Server 2000/2005/2008

StackOverflow https://stackoverflow.com/questions/1831827

Вопрос

в этом ТАК вопрос ОП хотел отбросить 0 в десятичных знаках для своих результатов.Пример, который я привел (ниже), чтобы обойти эту проблему, заключался в CAST с DECIMAL, а затем с CAST с FLOAT.

например

SELECT CAST(0.55 AS FLOAT)

Используя приведенный выше пример и запустив его в SQL Server 2005/2008, можно было бы получить правильный результат — 0,55.Но, как отметил Питер в другом посте, запуск его в SQL Server 2000 дает 0,55000000000000004.

Итак, мои вопросы:

  • Следует ли любой ценой избегать FLOAT, когда дело доходит до преобразования данных в SQL?

  • Почему cast(0.55 as float) урожайность 0.55000000000000004 в SQL2k еще 0.55 в последующих выпусках?

  • Сделала ли Microsoft использование FLOAT более надежным в более поздних версиях SQL Server?

Спасибо за ваше время.

Это было полезно?

Решение

Мое личное золотое правило:избегайте плавания.Я не помню, чтобы в последние годы использовал float.

Во всех бизнес-сценариях, которые я рассматривал в последнее время, мне приходилось хранить значения валют или даже числа с фиксированной точностью, поэтому я предпочитаю использовать DECIMAL или MONEY.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top