Правильное округление

98
10 сентября 2019, 00:40

Если вывести, например, floor((0.7 + 0.1) * 10) / 10, то выведется 0.7 вместо 0.8. Это проблема в точности чисел с плавающей точкой (спасибо, КЭП). Из-за этого пришлось написать свою функцию, которая правильно округляет в меньшую сторону:

 public static function fractionFloor($value, $precision = 0) {
    $round_per_value = 10 ** $precision;
    $pow_value = (string)$value * $round_per_value;
    $pos = strpos($pow_value, '.') !== false ? strpos($pow_value, '.') : strpos($pow_value, ',');
    $new_value = empty($pos) ? $pow_value : substr($pow_value, 0, $pos);
    $new_value /= $round_per_value;
    return $new_value;
}

Но функция работает только с положительными числами, как сделать, чтобы работала ещё с отрицательными (например, -0,123 до двух знаков должно равняться -0,13)?

READ ALSO
Как сделать GET запрос через JavaScript?

Как сделать GET запрос через JavaScript?

Как можно через javascript сделать GET запрос и получить от него ответ (html код некой страницы) ?

122
preg_replace() Заменить только первую подмаску

preg_replace() Заменить только первую подмаску

У меня есть регвыражение:

117
как сформировать многомерный json код на php

как сформировать многомерный json код на php

возникла необходимость вывести произвольную таксономию в json

145
Какие есть хуки/фильтры для указания скидки товару woocommerce?

Какие есть хуки/фильтры для указания скидки товару woocommerce?

Всем привет! Вопрос на засыпку: какие есть хуки/фильтры для указания скидки товару? Те

104