Микроблог

1.44K
.
web_demon, да, про строки это идея.

Вобще это косяк именно РНР потому что: http://play.golang.org/p/AUmeemsbT7
.
В питоне кстати тоже есть такой косяк.

>>> a = 15.9
>>> b = 5.3 * 3
>>> a == b
False
>>> def float_eq(a, b, epsilon=0.00000001):
...     return abs(a - b) < epsilon
... 
>>> float_eq(a, b)
True
>>>
.
web_demon
L!MP, reaper вот дело подсказывает. Но там нужно еще возится с возвращаемыми значениями, поэтому иногда проще строками сравнивать.

Я как то думал что это особенность из-за приведения типов в PHP, но вот и до сих пор не знаю чего так.
.
reaper, вот точно такой костыль я находил для РНР, но в случаем с РНР проще к строке привести.
Главное, что при приведении строки, не будет никаких не явных преобразованний нат числом.
.
reaper
В похапе всё гораздо проще.
bccomp(15.9, 5.3 * 3) == 0; // true

Гг. Но только для этого нужно его с соответствующим флагом скомпилить.
У меня в минте это по дефолту есть. В дебиане скорее всего тоже должно быть.
.
reaper, "проще" - это когда оно просто работает как в GoLang, гг.
.
L!MP, Ну мы же говорим о похапе
.
reaper, ну раз и в пайтоне та же история, значит дело в более фундаментальных вещах.
.
L!MP, Ну возможно. Я не изучал этот вопрос. Но и там можно это более красиво сделать (с помощью Decimal или как его там). Просто мне лень было в этом разбираться.
Всего: 79