pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Что бы значил такой процесс?

Лучший ответ: да, какую-то заразу поймали:
https://www.joesandbox.com/analysis/188751/1/html
я бы не искал откуда оно, а отформатировал систему и начал бы с нуля. отличный повод.
поискать можно, конечно, и почистить, но где гарантия, что вычистите на 100%?

Худший ответ: Если вдруг на твой компьютер просочился злобный вирус...
Вопрос: Как привязать домен RU-CENTER к моему серверу?

Лучший ответ: Вам нужна услуга DNS-хостинг.

Худший ответ: Nic.ru - те еще офигевшие, поэтому есть три варианта:
1. Оплачивать помесячно DNS-хостинг от Nic.ru, он кстати с серьезными ограничениями не советую
2. Пользоваться сторонними DNS-хостингами, например Cloudflare или Yandex Connect
3. Делать свой DNS-сервер
Вопрос: Обратились с просьбой разместить своё приложение за деньги на своём аккаунте. Что это?

Лучший ответ: Если не хотите получить пожизненный бан в Google Play - не связывайтесь!

Худший ответ: Ни один нормальный разработчик, занимающийся чем-то адекватным и приличным на такое бы не пошёл. Скорее всего это пишут казино-скамщики, приложения которых банят постоянно. Они просто публикуют его заново под другим названием и закупают рекламу во всех рекламных сетях, чтобы нажиться на дураках. Т.к., возможно, приложения иногда банят и с аккаунтом, за множественные нарушения, им проще дать тебе денег, чтобы ты опубликовал от себя, чем регать новый акк на реальное физ. лицо и банковскую карту
Вопрос: Как защитить от скачивания калькулятор расчета стоимости постройки бассейна на сайте?

Лучший ответ: Никак. Точка. Забудьте о любых способах защиты своего фронт кода. Захотят - украдут. Вы можете делать код менее читабельным, добавлять кучу воды, но ничего не даст никаких гарантий. Мы js код кошелька воровали и делали измененную копию. А причина простая - весь выполняемый код приходит клиенту на пк и дальше остается у него. Но можете не переживать, ваша логика на столько элементарна, что написать ее будет проще чем нажать ctrl+s. 

Ну и прям если думаете, что ваши старания кому-то сдались - делайте через бэкенд, время расчетов подрастет, но за то ваш безусловно дорогущий и сложный код никто не украдет

Худший ответ: Если речь о том, чтобы защитить ваш код, то исполнять его на сервере (NodeJS).
Вопрос: Квадратные скобки после имени функции. Что они значат?

Лучший ответ: makeArmy возвращяет массив функций
мы берем первый элемент массива и выполняем функциюconst army = makeArmy();

army[0](); //0

function makeArmy() {
	return [
		function () {
			return 0;
		},

		function () {
			return 1;
		}
	];
}

Худший ответ: Видимо makeArmy возвращает массив функций
Вопрос: Написал сайт html/css/js, выложил на хостинг, как быть с кэшированием?

Лучший ответ: Добавьте это в htaccess:<ifModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>

<IfModule mod_gzip.c>
	mod_gzip_on         Yes
	mod_gzip_dechunk    Yes
	mod_gzip_item_include file		\.(html?|txt|css|js|php|pl)$
	mod_gzip_item_include mime		^text\.*
	mod_gzip_item_include mime		^application/x-javascript.*
	mod_gzip_item_include mime		^application/javascript.*
	mod_gzip_item_exclude mime		^image\.*
	mod_gzip_item_exclude rspheader	^Content-Encoding:.*gzip.*
</IfModule>

<ifModule mod_headers.c>
    <filesMatch "\.(ico|jpg|jpeg|png|gif|swf)$">
        Header set Cache-Control "public"
    </filesMatch>
    <filesMatch "\.(css)$">
        Header set Cache-Control "public"
    </filesMatch>
    <filesMatch "\.(js)$">
        Header set Cache-Control "public"
    </filesMatch>
    <filesMatch "\.(x?html?|php)$">
        Header set Cache-Control "private, must-revalidate"
    </filesMatch>
</ifModule>

<ifModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access 7 days"
    ExpiresByType image/x-icon "access plus 6 month"
    ExpiresByType image/jpeg "access plus 6 month"
	ExpiresByType image/jpg "access plus 6 month"
    ExpiresByType image/png "access plus 6 month"
    ExpiresByType image/gif "access plus 6 month"
    ExpiresByType application/x-shockwave-flash "access plus 6 month"
    ExpiresByType text/css "access plus 7504800 seconds"
    ExpiresByType text/javascript "access plus 7516000 seconds"
    ExpiresByType application/javascript "access plus 7516000 seconds"
    ExpiresByType application/x-javascript "access plus 7516000 seconds"
    ExpiresByType text/html "access plus 600 seconds"
    ExpiresByType application/xhtml+xml "access plus 600 seconds"
</ifModule>

Худший ответ: Сайт - это таки html/css/js файлы? Просто выложите на хостинг, веб сервер сам все закеширует
Вопрос: Как правильно самому себе накидать ТЗ и план работ?

Лучший ответ: Если есть стопор, то видимо нет цели. Либо она не явно выражена.
Можно просто начать что то делать и смотреть что выходит и потом думать, что с этим шедевром делать и куда применить.
А так не понятно, зачем себе придумывать задачи. Проще ведь помогать кому то, пусть и с дурацкими, но реальными проблемами.
Ищите их - ибо всё равно надо будет прийти к тому, что нужно искать заказы.

Худший ответ: Если есть 30 минут, то можно найти все ответы на вопросы тут https://vc.ru/flood/71014-v-budushchee-deystviteln...
1. Как ставить цели
2. Какие ставить цели
3. Как это структурно описать
4. Как с этим жить дальше.
Вопрос: С чего начинать разработку движка?

Лучший ответ: С этого
https://google.gik-team.com/?q=create+cms+php+tutorial

Худший ответ: С исследования других CMS, чтобы понять что в них нравится, а что нет, какие у них между собой преимущества и недостатки.
Из этого потом цели, из них определять фичи, а от фич уже ставить задачи, продумывать архитектуру и тд.
Причём тут PHP я хз.
Вопрос: Как добавить скрипт .sh в автозагрузку Ubuntu 20.04?

Лучший ответ: @reboot /home/user/upd2.sh в кроне

Или в systemd

/etc/systemd/system/startscript.service
[Unit]
Description=My script service
After=network.target

[Service]
ExecStart=/usr/local/bin/upd2.sh

[Install]
WantedBy=default.target

и потом  chmod +x /usr/local/bin/upd2.sh
systemctl daemon-reload
systemctl enable startscript.service.service
systemctl start startscript.service.service

Худший ответ: Можно сделать сервис типа oneshot
https://gist.github.com/drmalex07/d006f12914b21198ee43
Вопрос: POST запрос на закрытое API (has been blocked by CORS policy)??

Лучший ответ: ЕМНИП, CORS влияет только на запросы из браузеров. Бэкэнд при этом должен работать с API без проблем.

Худший ответ: Добавил con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
        con.addRequestProperty("Host", "????")
        con.addRequestProperty("Origin", "????")
        con.addRequestProperty("Referer", "????")
Вопрос: Почему перечеркивается указанные свойства при адаптации?

Лучший ответ: Неправильный порядок свойств в собранном CSS. 
media должны быть после обычного состояния.

Худший ответ: Может просто понятнее напишу. Речь о переопределении стилей, т.е. о противоречии во входяших условиях. Приоритет определяется специфичностью. 

Что простым языком тот же приоритет. Например если ты напишешь такой код:
.class {
    color: red;
    color:  blue;
}
То цвет будет голубой, а в дебаггере первое свойство будет перечеркнуто, т.к. то, что ниже → приоритетнее. Звучит просто, но это работает только в плоскости, специфичность штука, которая не только про порядок, но и про вложенность, !important-ы и т.д.

Именно поэтому рекомендуется медиа-запросы оформлять после в порядке возрастания запроса, т.е. сперва дефолтные стили, потом для таблеток, и так далее. Это подход mobile-first. Но на самом деле не так важна последовательность, сколько отсутствие переопределений. Как по мне.
Вопрос: Как составить условие по «массиву»?

Лучший ответ: Предложение есть: не хранить массивы в виде текста. Вынести их в отдельную таблицу, или хотя-бы в json (если ваша СУБД умеет с ним работать).

Еще есть предложение почитать учебник по базам данных, где про нормальные формы, индексы, и т.д. Но вы же и так в курсе, правда?

Худший ответ: Решение:
SELECT * FROM `table` WHERE JSON_VALUE(`col`, '$[0]') > 1;
Вопрос: Как вывести значение первого словаря с помощью второго словаря?

Лучший ответ: ВЫ как-то перемудрили все, можно же просто 
sells={
...   "Маша":"Samsung 20",
...   "Максим":"Iphone 6S",
...   "Наташа":"Lenovo Legion"
... }
prices={
...   "Samsung 20": 300,
...   "Iphone 6S": 260,
...   "Lenovo Legion": 450
... }
result = [name for name, tel in sells.items() if prices.get(tel, 999) < 350]
>>> print(result)
['Маша', 'Максим']

Худший ответ: prices={
  "Samsung 20": 300,
  "Iphone 6S": 260,
  "Lenovo Legion": 450
}
sells={
  "Маша":"Samsung 20",
  "Максим":"Iphone 6S",
  "Наташа":"Lenovo Legion"
}

phones = [key for key, value in prices.items() if value < 350]
seller_names = [key for key, value in sells.items() if value in phones]
# Out: ['Маша', 'Максим']
Вопрос: MacBook. Какую пленку на экран выбрать или использовать прокладку?

Лучший ответ: Вы не найдете ни одной нормальной пленки, матовая - сильно искажает картинку, глянцевая - сами знаете.
В домашних условиях ничего не будет екрану, если куда то выносите макбук - можно купить специально вырезанную микрофибру под ваш ноут (как на всю область екрана, так и поменьше просто на область клавиатуры, да требуется 30 секунд больше чтобы его упаковать, но так вы и екран сохраните и сможете пользоваться им с удовольствием (я про екран).


Фотка просто с гугла, не обязательно этой фирмы брать. Щас выбор большой, я раньше покупал на алишке просто качественную микрофибру и обрезал) Не знаю как на счет для клавиатуры, мне кажется будет ерзать внутри, я бы выбрал на всю область чтобы оне не еразала просто...

Худший ответ: У меня за годы каждодневного таскания 13 прошки в рюкзаке, падений и активного использования появились следы от клавиатуры.

Если вы используете его как стационарный и бережно обращаетесь то можете обойтись без пленки.

Либо поискать матовую пленку.
Вопрос: Как сделать прохождение уровня с помощью нужной последовательности клавиш?

Лучший ответ: Писать в буфер нажатые игроком клавиши. 
Например хотя бы в list.
При нажатие неправильной клавиши просто обнуляете список.

Худший ответ: Примерно так. Код не запускал.
int counter = 0;
string target = "adadadddaaa";

void Update()
{
        string input = Input.inputString;

        if (!string.IsNullOrEmpty(input))
        {
            if (input.ToCharArray()[0] == target[counter])
            {
                counter++;
                if (counter >= target.Length)
                { // next level
                }
            }
            else
            {
                // wrong char! restart
            }
        }
}
Вопрос: Откликнулся на заказ, а при общении с заказчиком отказался: допустимо?

Лучший ответ: Нормально. Потому что из заказчика приходится клещами вытягивать, что он хочет.

Худший ответ: А причем тут деловой этикет только?  Если вы дали добро и оценку работы, все согласны и вы тут неожиданно пропадаете это конечно скотчем с вашей стороны
Вопрос: Как рассчитать объем работ в часах?

Лучший ответ: Только на основе собственного опыта подобных работ. Оценка - это целое искусство, ему учатся всю жизнь. Ну и желательно умножать эти часы на 1.5-2, потому что на деле так и выходит.

Худший ответ: опытным путем
Вопрос: Как сделать вывод толко 1 строки после совпадения grep -A 1?

Лучший ответ: можно  без лишнего колдовства )))
grep -A 1 'ABCD' test.txt | tail -n 1
НО если строк с 'ABCD' несколько??? :(

Худший ответ: убрать можно вторым grep фильтром:

grep -A 1 'ABCD' test.txt | grep -v 'ABCD'
7777

естествненно если во второй строке (которую хотим сохранить) тоже есть ABCD  то надо модифицировать второй grep указывая найти чего нибудь чего там нет... но принцип остается прежним
Вопрос: Как ускорить rsync?

Лучший ответ: В процессе выяснения деталей в комментариях к вопросу было найдено решение.
В данном случае синхронизация выполнялась без использования опции `--times`, которая сохраняет время модификации файла при синхронизации. При этом не была использована опция `--size-only`, благодаря которой файлы с одинаковыми размерами считаются одинаковыми вне зависимости от времени изменения.
И получается, что даты изменения у всех уже синхронизированных файлов отличаются, и rsync при повторном запуске считает эти файлы потенциально разными и считает их контрольные суммы, чтобы сравнить их по содержимому. На это и уходило время.
Добавление опции `--size-only` существенно сократило время анализа файлов перед началом передачи.Хотя, на мой взгляд лучше вместо этого по умолчанию всегда использовать `--times` (в том числе в составе `-a`), если возможно.
Кроме того, была использована опция `-v`, которая выводит информацию о синхронизируемых файлах, что тоже могло замедлять процесс, хотя, скорее всего ,не значительно.

Худший ответ: Если не надо сравниваь какие уже перенесены, то пакуй все в архивы (tar, gz) и перекачивай тем-же rsync'ом или scp.
Вопрос: Как узнать размер разъема DVD привода на ноутбуке HP 15-bs185ur?

Лучший ответ: Вынуть привод и посмотреть на него. Там же вроде всего один болтик открутить нужно.

Худший ответ: Они все обычно slim, но бывают нюансы в виде 7 или 9мм. Поищите на оф. сайте запчасти к вашему ноуту и из них определите какой толщины у вас привод.
Вопрос: Почему шрифт не соответствует в html?

Лучший ответ: Кеш обновите в браузере Ctrl + F5

Худший ответ: Почему бы не попробовать .ttf? 
@font-face 
   {font-family: "Exo2";
   src: url("font/Exo2.ttf") format("truetype");
   font-style: normal;
   font-weight: normal;}
Сокращайте названия всегда.
Вопрос: Является ли вторжением в личную жизнь использование приложения, которое отслеживает, в какое время человек спит?

Лучший ответ:  историю звонков, смс, писем, соц. сети и мессенджеры
Никогда не поставлю такое приложение. приложение просто смотрит, когда человек проявляет активность
Подразумевается, что я не выпускаю телефон из рук? Я пришел домой, закинул телефон на диван, сел за комп и погрузился в игруху, из которой "вынырнул" часов через шесть. Я в это время спал или нет? :)

Худший ответ: легальные источники данных - историю звонков, смс, писем, соц. сети и мессенджеры
В каком месте это - легальные источники?То есть по сути приложение просто смотрит, когда человек проявляет активность
Не имеет отношения к личной информации.Человек не давал явное согласие отслеживать его время сна, но и не запрещал.
Если он давал доступ к тем или иным датчикам, то это уже не важно.
Вопрос: Какой движок выбрать и в какую сторону копать?

Лучший ответ: Любой движок. Потребуется программист.

Худший ответ: Billmanager и немного кода. Упрощенно подойдет даже интеграция с помощью Shell-скриптов.
Вопрос: Нужно защитить домены 2-5го уровня как это сделать?

Лучший ответ: не делать домены четвертого и пятого уровня...
не хватает символов на третьем уровне ??

Худший ответ: SAN сертификат с добавлением всех необходимых доменов.
Вопрос: Как сравнивать строки по неполному сходству?

Лучший ответ: Расстояние Левенштейна или другие метрики для сравнения.

Худший ответ: Про расстояние Левенштейна (как базовую метрику, с которой стоит начинать) вам уже написали. Проблема начинается, как по мне, в момент, когда приходит понимание, что "слова могут быть переставлены". И тут вам придется вспомнить комбинаторику и все эти факториалы. Потому как даже для трех слов количество перестановок будет равно 3! = 6. А вы, опять же скорее всего, будете брать и сплитить вашу строку по пробелам и сравнивать каждое слово с каждым. Чувствуете возрастающую сложность?
Вопрос: Должны ли логи оставаться чистыми?

Лучший ответ: Лучше переписать код так, чтобы "ненастоящие" ошибки не возникали, штатные ситуации хендлить, нештатные ловить в логах. Лишние логи это нездоровая ситуация для долгоиграющего проекта.

Худший ответ: Вы предлагаете проверять перед каждым созданием наличие такой записи? 
У вас это и так происходит, иначе бы не  было ошибки. Если вам действительно все равно на недобавившиеся строки, тогда скажите об этом СУБД, on conflict do nothing, или что-то в этом роде в зависимости от СУБД.
Но почему-то мне кажется, что ваши пользователи не согласятся с такой логикой.
Вопрос: Нужно ли покупать две лицензии windows server, если один из них будет работать в гипервизоре второго?

Лучший ответ: 1. В WinSrv2019 лицензируются физические процесорные ядра.
2. Лицензии есть на 2 ядра и на 16 ядер.
3. Минимальный пакет на один физический сервер - лицензирование 16 ядер.
4. Пакет Standard позволяет использовать один экземпляр на хостовой машине и два экземляра в вирутальных машинах - причём не важно, в hyper-v, или в любом другом гипервизоре. Но нельзя, например, на одной машине использовать хостовый экземпляр, а на другой в другом гипервизоре два виртуальных - то есть ограничивается одной машиной. Никаких ограничений вида "хост только в роли hyper-v можно использовать" я не видел.

Худший ответ: Ну можно одной обойтись.
На хостовую машину ставите бесплатный Hyper-V от Microsoft, а вот внутри уже сервер на котрый лицензию покупаете.
Вопрос: Почему выводится заголовок (h3) без стиля?

Лучший ответ: А кто вам сказал что можно так добавлять теги?

Наверное надо всё-таки так
var params = new URLSearchParams(location.search);
if(params.get('sect') == '1') {
    $('body').apend('<h3>Microsoft Word, Excel, PowerPoint и другие</h3>');
}

Худший ответ: Там где $('body').after('</h3>');
В конце

Надо:$('body').before('</h3>');
Вопрос: Авто-декремент mysql+php(автоматически)?

Лучший ответ: Вам не нужен декремент, его роль будет выполнять дельта = текущее время - время окончания (которые Вы вносите в базу). А тикер можете делать хоть каждые пол секунды для показа информации. В базе ничего не надо менять, только показывать дельту.

Худший ответ: Тебе в базе ничего считать не надо. Когда человек нажимает на ссылку, ты в базу пишешь не интервал, а текущее время. Когда тебе надо юзера информировать (например, он открывает какую-то страницу, где выводится остаток времени), ты просто из текущего времени вычитаешь то время, которое было вписано в базу, когда человек нажал на ссылку. Вот и все. UPDATE в базе делать не надо.
Вопрос: Zabbix: как быстро развернуть и начать мониторить сеть?

Лучший ответ: Мне кажется, в документации всё довольно подробно описано. С чем именно возникают сложности?
https://www.zabbix.com/documentation/4.2/ru/manual...

Худший ответ: Zabbix не строит карту сети автоматически, вам придётся самому это делать. У него немного другая идеология. Если хотите чтоб карта сети рисовалась и хосты добавлялись автоматически - смотрите в сторону Nagios. 
Вам надо завести все узлы для мониторинга отдельно и привязать к ним шаблон ICMP Ping, и затем вручную рисовать карту сети.
Вопрос: Как найти русскоязычное сообщество программистов блоггеров?

Лучший ответ: ЖЖ

Худший ответ: Раздел /pr/ на Дваче
Замечательное IT (украинский филиал)
Замечательное IT (русский филиал)
Вопрос: Каков нормальный размер билда react?

Лучший ответ: Нет. Размер файла должен не превышать 400кб, если превышает, то надо делить на чанки. Но тебе следовало бы перепроверить все модули, которые ты импортируешь, вполне вероятно ты подтягиваешь тонну ненужного.

Худший ответ: Нет. Размер файла должен не превышать 400кб, если превышает, то надо делить на чанки. Но тебе следовало бы перепроверить все модули, которые ты импортируешь, вполне вероятно ты подтягиваешь тонну ненужного.
Вопрос: Существует ли плагин подобного слайдера?

Лучший ответ: Держи

Тебе нужно будет писать стили под эти нужды:
кружки, который сам крутится каждые секунд 10, и который можно стрелочкой крутить

Худший ответ: Для всех типов слайдеров можно смело использовать Swiper
Вопрос: Как выбрать элементы с определённым классом и без содержимого?

Лучший ответ: document.querySelectorAll('.item span').forEach(n => {
  if (!n.innerHTML.trim()) {
    n.style.display = 'none';
  }
});Можно с jquery$('.item span').filter((i, n) => !n.innerHTML.trim()).hide();

Худший ответ: С jquery можно выбрать так $('.block span')
где block - имя класса нужного вам блока
Вопрос: Какие требования к созданию приложения по аудиокнигам?

Лучший ответ: Расскажу из своего общего опыта разработки.
Нужно дойти до точки понимания, как проекты вроде storytel устроены. На поверхности там есть:
- фронтенд (простые страницы)
- фронтенд, работа с аудио
- бекенд, работа с аудио 
- система оплаты (связь по API с сервисами оплаты, пробный и основной период подписки)
- поиск 
- система рекомендаций
- доступ к прослушиванию/чтению оффлайн
Наличие приложения для мобильных говорит о том, что взаимодействие бека с фронтом реализовано через API, чтобы один бекенд мог однородно работать с разными фронтендами.
Так можно начать с самых понятных для себя частей приложения, постепенно переходя к более сложным - так легче читать, гуглить и преодолевать трудности)

Худший ответ: Говоря о бэкенд и веб-приложении мы говорим не о Java SE, а о Java EE.
Соответственно, вам нужно изучить Java SE + Java EE. 
Далее рекомендую выбрать фреймворк для разработки. Например, Spring.
Но на самом деле всего этого недостаточно...
Вам нужно изучить язык SQL (для работы с БД), изучить основы веба - Html, CSS, JavaScript. Не помещает изучить regexp и т.д.
Знание только Java для веб-разработки недостаточно.
Вопрос: Почему так работает SQL выборка из поля типа float?

Лучший ответ: Я отвечу чуть более развёрнуто.
Дело в том, что float хранит дробные числа в двоичном формате.
Кроме двоичных мы работаем с десятичными числами и тут возникает проблема.
К примеру, число 1/3 (одна третья) в десятичной системе счисления будет записываться как бесконечная (периодическая) десятичная дробь 0.33333(3). А вот в троичной системе счисления это число запишется конечной троичной дробью: 0.1 (читается, как "ноль целых и одна третья").
По такой же схеме у нас десятичное число 0.5 (ноль целых и пять десятых) равно в двоичной 0.1 (ноль целых и одна вторая). 0.25 [10] == 0.01 [2]; 0.75 [10] == 0.5 [10] + 0.25 [10] == 0.11 [2].

А теперь, внимание, на десятичное число 0.2 (ноль целых и две десятых), для перевода в двоичную систему счисления нам нужно сложить это число из членов двоичного ряда:
==1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128, 1/256, 1/512, 1/1024 ...
0. 0    0    1    1     0     0   ( 1      1      0      0 )
В круглых скобках обозначен период двоичной дроби. То есть двоичной дробью в конечном количестве знаков после двоичной запятой задать десятичное число 0.2 (ноль целых и две десятых) НЕЛЬЗЯ!

Если у нас есть лишь конечное количество знаков, то ими представить в точности 2/10 в двоичной системе счисления одним числом невозможно.
Чему конкретно получится равным "обрзанное" (округлённое конечно) число будет зависеть от того по какой именно двоичный разряд мы его округлили.

Из всего этого следует, что сравнивать записанные таким образом числа на строгое равенство - плохая идея. На самом деле сравнивать на неравенство тоже так себе. Сравнение должно быть с некоторой точностью и точность эту нужно адекватно контролировать.

Итак, чтобы сравнить два числа на равенство, скажем a и b, нужно выбрать некое e=0.0000001, которое будет определять точность сравнения и проверять условие: abs(a-b)<e - модуль разности сравниваемых чисел должен быть меньше выбранной точности. Если условие соблюдается, то числа считаем условно равными с заданной точностью. Если нет - не равными.

Добавлю, что, как отметили выше, цены и денежные суммы вообще в формате с плавающей точкой хранить "плохая примета"=). Для этого есть специальные форматы, которые не создают таких сюрпризов при переводе из/в десятичную систему.
Вот замечательная статья на хабре про это: Потеря точности из Double во Float или «Куда пропа...
Ну и еще есть: Что нужно знать про арифметику с плавающей запятой, Наглядное объяснение чисел с плавающей запятой, Разбираемся в числах с плавающей точкой, и т.д.

Худший ответ: SELECT * FROM products WHERE ABS(price - 0.8) < 0.01 -- (будут результаты) второе число — ед. из. цены