Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Тип данных float сравнивая 2 числа визуально одинаковых не срабатывает знак равенства  [new]
kolyady
Member

Откуда:
Сообщений: 137
собственно говоря вопрос в теме
имеем 2 механизма которые возвращают 2 визуально одинаковых значения но знак равенства не срабатывает на них.

имеем результат в флоате
12715,845
и сравниваем с другим результатом в том же флоате
12715,845

визуально одинаковы , как можно отобразить реальные значения, чтобы понять в чем разница?
26 окт 18, 16:54    [21716381]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных float сравнивая 2 числа визуально одинаковых не срабатывает знак равенства  [new]
kolyady
Member

Откуда:
Сообщений: 137
и округляет на таких позициях по разному
26 окт 18, 16:58    [21716387]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных float сравнивая 2 числа визуально одинаковых не срабатывает знак равенства  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4257
kolyady
визуально одинаковы , как можно отобразить реальные значения, чтобы понять в чем разница?


declare @f float = 3.14
select CAST(@f as varbinary(8))
26 окт 18, 16:59    [21716390]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных float сравнивая 2 числа визуально одинаковых не срабатывает знак равенства  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36693
Выбирайте любой метод сравнения, множество их
26 окт 18, 17:04    [21716401]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных float сравнивая 2 числа визуально одинаковых не срабатывает знак равенства  [new]
kolyady
Member

Откуда:
Сообщений: 137
Гавриленко Сергей Алексеевич,

я ms sql юзаю зачем мне пост по С++
26 окт 18, 17:19    [21716419]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных float сравнивая 2 числа визуально одинаковых не срабатывает знак равенства  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36693
kolyady
Гавриленко Сергей Алексеевич,

я ms sql юзаю зачем мне пост по С++
Там пост про float и про то, как можно сравнивать float-значения.

Сообщение было отредактировано: 26 окт 18, 17:22
26 окт 18, 17:20    [21716422]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных float сравнивая 2 числа визуально одинаковых не срабатывает знак равенства  [new]
kolyady
Member

Откуда:
Сообщений: 137
Гавриленко Сергей Алексеевич,

и все варианты сравнения тож на с++. Которые я в студии никак не напишу.
26 окт 18, 17:23    [21716424]     Ответить | Цитировать Сообщить модератору
 Re: Тип данных float сравнивая 2 числа визуально одинаковых не срабатывает знак равенства  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36693
kolyady
Гавриленко Сергей Алексеевич,

и все варианты сравнения тож на с++. Которые я в студии никак не напишу.
Тогда в управдомы, если вы не в состоянии написать abs(@f1 - @f2) < @FLT_EPSILON.

Как вычислять @FLT_EPSILON, если нет такой константы, ищется за 30 секунд .

Код для лентяев на MSSQL:

declare
    @FLT_EPSILON        float   = 1

    , @1f               float   = 1
    , @2f               float   = 2

while ( @1f + @FLT_EPSILON / @2f ) > @1f
    set @FLT_EPSILON /= @2f

select @FLT_EPSILON


Применимость данного способа и остальные варианты изучайте уже самостоятельно.

Сообщение было отредактировано: 26 окт 18, 17:39
26 окт 18, 17:35    [21716442]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить