Микроблог

2.53K
.

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