Alex
Белая или черная? Это важно для понимания уровня дева)
Pavel
Блин
Pavel
Столкнулся с проблемой
Pavel
php for($i = 0.0; $i <= 1.0; $i+= 0.1){ if($i === 0.5){ echo '$i === 0.5'; break; } }
Pavel
Не сравнивается и всё тут
Pavel
При том, к примеру, если делать на каждой итерации var_dump($i, 0.5), то в какой-то момент можно увидеть float(0.5) float(0.5)
Pavel
Подозреваю, что проблемы с представлением чисел с плавающей точкой
Pavel
Но почему тогда $a = 0.5; $b = 0.5; var_dump($a === $b); // bool(true)
Pavel
Я бы подумал. что проблема возникает при математических операциях, но опять таки $a = 0.5; $b = 0.6; var_dump(($a+0.1) === $b); // bool(true)
Vladislav
Ты точно значение счетчика на каждой итерации пробовал вывести?
Pavel
да
Pavel
в сообщении с циклом опечатался
Vladislav
Ааа... ты уже исправил код
Pavel
там, конечно же, не $i++
Vladislav
У меня все выполнилось ожидаемо
Vladislav
PHP 7.0.22-0ubuntu0.16.04.1 (cli) ( NTS )
Pavel
А попробуй теперь $i = 24.0; $i <= 40.1
Pavel
И в условии, к примеру if($i === 20.0){ echo '$i === 20.0'; }
Vladislav
Interactive mode enabled php > for($i = 0.0; $i <= 1.0; $i+= 0.1){ php { if($i === 0.5){ php { echo '$i === 0.5'; php { break; php { } php { } $i === 0.5
Dmitriy
php for($i = 0.0; $i <= 1.0; $i+= 0.1){ if($i === 0.5){ echo '$i === 0.5'; break; } }
<?php for($i = 0.0; $i <= 1.0; $i+= 0.1){ echo $i .'=== 0.5'.PHP_EOL; if($i === 0.5){ echo 'true'.PHP_EOL; }else { echo 'false'.PHP_EOL; } } ответ 0=== 0.5 false 0.1=== 0.5 false 0.2=== 0.5 false 0.3=== 0.5 false 0.4=== 0.5 false 0.5=== 0.5 true 0.6=== 0.5 false 0.7=== 0.5 false 0.8=== 0.5 false 0.9=== 0.5 false 1=== 0.5 false
Pavel
что-то непонятное
Vladislav
И в условии, к примеру if($i === 20.0){ echo '$i === 20.0'; }
Это условие никогда не будет истинно если ты цикл начал с значения 24
Pavel
сейчас, код кину
🐴
float нельзя проверять на равенство, только на больше/меньше
🐴
0.1 + 0.2 не равно 0.3
Pavel
` for($i = 18.5; $i <= 22.1; $i += 0.1){ var_dump($i, ($i === 20.0), ($i === 20)); echo PHP_EOL; } ... float(20) bool(false) bool(false)
🐴
php > var_dump (0.1 + 0.2 === 0.3); php shell code:1: bool(false) php >
Pavel
0.1 + 0.2 не равно 0.3
тогда почему $a = 0.5; $b = 0.6; var_dump(($a+0.1) === $b); // bool(true)
🐴
тогда почему $a = 0.5; $b = 0.6; var_dump(($a+0.1) === $b); // bool(true)
потому что надо прочитать как устроены float внутри и как над ними выполняются операции
🐴
и что такое двоичная система
Vladislav
php > for($i = 18.5; $i <= 22.1; $i += 0.1){ php { var_dump($i, ($i === 20.0), ($i === 20)); php { echo PHP_EOL; php { } float(20) bool(false) bool(false)
🐴
и почему 0.3 нельзя записать как конечную дробь в двоичной системе
🐴
хорошо бы начать с азов математики, прежде чем браться за программирование
Vladislav
Это ты хочешь рассказать за знак, степень и мантису?
🐴
дада
🐴
и IEEE754
Vladislav
@jsnow0177 https://ru.wikipedia.org/wiki/%D0%A7%D0%B8%D1%81%D0%BB%D0%BE_%D1%81_%D0%BF%D0%BB%D0%B0%D0%B2%D0%B0%D1%8E%D1%89%D0%B5%D0%B9_%D0%B7%D0%B0%D0%BF%D1%8F%D1%82%D0%BE%D0%B9
Pavel
это я знаю
Pavel
читал ещё, когда тут кто-то рассказывал о 0.7+0.1
🐴
это я знаю
тогда зачем ты проверяешь флоаты на равенство?
Pavel
прочитал и забыл
Pavel
вообще, впервые за несколько лет мне приходится делать что-то с числами с плавающей точкой, так что, думаю. можно раз затупить
Pavel
Кстати. Ещё вопрос. Кто-нибудь сталкивался с появляющимися периодически php-файлами закодированными в base64 на сайтах с вордпрессом?
Pavel
Самому разбираться времени не было, да и вп не люблю, но может кто встречался с подобным.
Pavel
Думал, что плагины, но на сайте, вроде, никаких плагинов, которые могли бы кидать в корень сайта эти файлы нет. Потом предположил, что, мб, у кого-то появился доступ к ftp или к дыре в вп, но по логам никто кроме меня не коннектился
Vladislav
Тебе по прошлому вопросу for($i = 18.5; $i <= 22.1; $i += 0.1){ var_dump($i); printf('%.50f'.PHP_EOL, $i); printf('%.50f'.PHP_EOL, 20.0); var_dump($i === 20.0); }
Pavel
Та уже тема прояснилась, но спасибо
Vladislav
Через округления можешь добиться нужного результата
Anonymous
У знакомого просто после вп сайта на всех остальных появились аналогичные файлы.
Anonymous
но это не точно
~
посоны что такое sap/abap?
Ivan
Буржуйская erp
Vitaly
а там как в 1С, на родном языке?
Vitaly
ICH DAS FANTATICH var
Sergey
нет, они не на столько упоротые
Anonymous
ICH DAS FANTATICH var
ich das IST fantastisch var
Ivan
Там насколько помню нельзя проводить документы задним числом, поэтому оно в нашей рашке не прижилось
Sergey
ich das IST fantastisch var
призываю @der_Igel
🦔
я не умею в сап
🦔
ICH DAS FANTATICH var
у вас крайне хуёвый немецкий
🦔
хелбой вроде умел в сап
Sergey
я не умею в сап
я про немецкий
🦔
ну немецкий хуёв, да
🦔
в обоих случаях
Anonymous
пришел ёж и чат наполнился хуями
Andrey
Vitaly
ICH BIEN KHUEVY DOICHE SPEAKER
Anonymous
слыш
Anonymous
я хожу
Anonymous
а ты стреляешь
Anonymous
Виталик
Alex
Мне кажется что все кто свою страну называют рашкой, и живут также как называют - то х..ва
Anonymous
Или ты пидараха зомбированая