[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Значение переменной
SnowWind
Всем привет.
Получаю массив в функцию после чего прохожу его foreach и проверяю условие
foreach($order_book['buyLevels'] as $key => $value){
echo '</br>'.$value['price'].' > '.$price.' ? ';
if($value['price'] > $price){echo ' da!</br>';}else{echo 'net!</br>';}
$a = $value['price']*100000; $b = $price*100000;
echo '</br>'.$a.' > '.$b.' ? ';
if($a > $b){echo ' da!'; $c = $a - $b; echo ' a - b ='.$c; $d = $a/$b; echo ' a/b ='.$d.'</br>';}else{echo 'net!</br>';}
...........

получаю вот такой интересный вывод
Цитата
array(2) { ["buyLevels"]=> array(14) { [0]=> array(2) { ["price"]=> float(3.61E-6) ["volume"]=> float(150) }
.................
3.61E-6 > 3.61E-6 ? da!

0.361 > 0.361 ? da! a - b =5.5511151231258E-17 a/b =1

Как такое может быть?
SnowWind
Такая хрень попадается в некторых слуаях при определённых значениях $value['price'] я так и не определил с чем связано такое поведение, так же не понимаю как это пофиксить
gettype($value['price']) и gettype($price) показывает double для обоих
brevis
Попробуй https://www.php.net/manual/ru/function.bccomp.php

_____________
Чатик в телеге
SnowWind
Цитата (brevis @ 23.06.2019 - 08:11)
Попробуй https://www.php.net/manual/ru/function.bccomp.php

bccomp($value['price'], $price, 8) всегда 0 возвращает, теперь вообще все равно smile.gif
SnowWind
вот какую штуку выяснил, если перед сравнением оба числа умножить на како-то большое значение (10000000000), а потом сравнивать, то проблем не возникает, почему так-то?
walerus
Посмотри про это
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.