|
|
|
|
if($O[$v] != $ORDER[$v])
{
echo $O[$v]." != ".$ORDER[$v].'<br />';
var_dump($O[$v]); var_dump($ORDER[$v]);
}
|
Выдает:
1551.97 != 1551.97
float(1551.97) string(7) "1551.97"
|
$O - Данные из сессии (значения рассбитываются в скрипте)
$ORDER - Из БД.
Сравнение же не "жесткое", че ему не нравится? | |
|
|
|
|
|
|
|
для: tAleks
(27.11.2011 в 18:47)
| | Лучше, приведите float к строке (с двумя знаками после запятой) или прогоните его через round() в 2 во втором параметре. float хранится не точно, а в виде модели, там в конце мантисы накапливается ошибка вычисления - она не и недает воспользоваться операторами равенства. Этой проблеме уже лет 50, тут ничего поделать нельзя - у нас так операции с плавающей точкой устроены, это даже в железе уже отлито. И еще лет 100-200 будет тоже самое. | |
|
|
|