2016-04-27 5 views
0

Floats и Doubles представляют собой приблизительные значения цифровых данных. По этой причине мы не можем сравнивать их по причине where, как в случае с другими типами данных.Сравнение поплавков в MySQL?

Есть ли недостаток, если я сравниваю два раза и плавает, как этот CAST(column_name as CHAR) = CAST(@value as CHAR)

Есть ли причина, веб-сайт MySQL рекомендует использовать ABS(a - b) <= some value

+0

Вообще, если вы хотите, чтобы сделать этот вид сравнения, то вы, вероятно, не должен» t использовать FLOATS или DOUBLES – Strawberry

+0

@Strawberry Я знаю, что десятичные знаки являются предпочтительными. Мне просто нужно использовать float/doubles. – MATH000

+0

@ MATH000 не уверен, какой ресурс сайта вы используете, но мне не известно о функции ABS, которая принимает два параметра в MySQL. Обычно вы делаете «ABS (a - b) <= некоторое значение». Что касается причины использования этого уравнения, то «некоторое значение» обычно называется «значением допуска». Подумайте об этом как о приемлемом уровне разницы в сравнении. Если это было 0,001, сравнение двух поплавков вернет true, если разница будет в пределах одной тысячной. –

ответ

1

Возможно, этот простой пример можно обобщить проблему с CHAR ...

SELECT CAST(2 AS CHAR) > CAST(11 AS CHAR); 
+------------------------------------+ 
| CAST(2 AS CHAR) > CAST(11 AS CHAR) | 
+------------------------------------+ 
|         1 | 
+------------------------------------+ 
1 row in set (0.31 sec) 

MySQL>

Смежные вопросы