Round php аналог js

Math.round

Если дробная часть числа равна 0.5 или больше, то аргумент округляется к следующему большему целому. Если дробная часть меньше, чем 0.5, то округление производится до ближайшего меньшего целого.

// возвратит 20 x=Math.round(20.49) // возвратит 21 x=Math.round(20.5) // возвратит -20 x=Math.round(-20.5) // возвратит -21 x=Math.round(-20.51)

См. также

Очень жаль, что нет функции, которая округляет до нужного знака. В статье неплохо бы ее написать.

Округление до нужной точности после запятой

Для этого используется метод toFixed.
0.1234.toFixed(2) = 0.12

.toFixed() не всегда работает правильно.. в Firefox 21.0, Chrome, Safari и Opera результатом такой строки
parseFloat(71.175).toFixed(2) будет 71.17 .

а такое результатом выражения
Math.round(parseFloat(71.175) * 100) / 100 будет 71.18, т.е. результат правильно округленный

при этом IE на тех же выражениях выдает всегда 71.18 ! похоже «правильность» js еще и от браузера зависит

>не всегда работает правильно.
parseFloat(71.175).toFixed(2)=71.17

правильно, это называется «банковское округление», где при округлении 5 учитывается предшествующий знак, нечетные в меньшую, четные в большую сторону.
поэтому
parseFloat(71.185).toFixed(2) будет 71.19

это округление используется в .NET

Но это только для toFixed(2). Для toFixed(1) или toFixed(3) этот феномен не наблюдается

Не могу найти функцию, которая возвращает дробную часть числа

123.456 % 1
и взять цифр сколько там надо

можно еще так:
123.456.toString().split(/\./)[1];

Стоит еще раз поставить ударение: toFixed возвращает строковое представление числа, а поскольку и сравнение и сложение для строковых переменных в JS возможно (последнее становится конкатенацией) то желательно применять что то вроде

var foo = 1 * number.toFixed(2)
var foo = parseInt(number.toFixed(fc), 10);

Дельный совет, спасибо. Провернуть такое при помощи toFixed() почему-то не получилось.

Читайте также:  Tkinter python кнопка выхода

Собственно функция round с нужной точностью, для страждущих:

Вот ещё один вариант, но за точность не ручаюсь:

> Собственно функция round с нужной точностью, для страждущих:

Math.round(10000.345 * 100) / 100 = 10000.34
Number.prototype.round = function(base) < if (base == null || base < 0) < return this; >var string = this.toString(); var point_index = string.indexOf("."); if (point_index == -1) < return this; >var symbol_index = point_index + 1 + base; if (symbol_index >= string.length) < return this; >var integer = parseInt(string.substring(0, point_index), 10); var fractional = parseInt(string.substring(point_index + 1, point_index + 1 + base), 10) || 0; var symbol = parseInt(string.charAt(symbol_index), 10); if (symbol >= 5) < if (base == 0) < integer ++; >else < fractional ++; >> return parseFloat(integer + "." + fractional); >

Все равно это не решает проблемы:
10000.345.round(1) = 10000.3

Отправить комментарий

  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

  • Асинхронное программирование
  • Google Gears в деталях
  • Javascript Flash мост
  • Букмарклеты и правила их написания
  • О подборке книг на сайте
  • Почему — плохо
  • Способы идентификации в интернете
  • Уровни DOM
  • Что почитать?
  • Шаблонизация с javascript
  • Юнит-тесты уровня браузера на связке Selenium + PHP.
  • Справочники: Javascript/HTML/CSS
  • Система сборки и зависимостей Google Closure Library
  • Хранение данных на клиенте. DOM Storage и его аналоги.
  • 10 лучших функций на JavaScript
  • You can certainly see your enthusiasm.
    1 час 51 минута назад
  • Хорошая статья, которая меня кое-чему.
    3 часа 26 минут назад
  • Tavor TS12 for Sale
    4 часа 28 минут назад
  • buy420weeds.com, igetcartsforsale.com.
    14 часов 16 минут назад
  • สล็อตเว็บตรง.
    17 часов 9 минут назад
  • Join us for an สล็อตเครดิตฟรี.com .
    17 часов 12 минут назад
  • The eBay credit card customer service.
    18 часов 13 минут назад
  • Thank you for this great read. I am.
    18 часов 20 минут назад
  • Thanks for letting me link to your.
    18 часов 39 минут назад
  • I get a lot of great ideas from your.
    18 часов 40 минут назад
Читайте также:  Вывод элементов матрицы python

Источник

PHP ROUND против Javascript ROUND

Я нашел очень странную проблему, проблема заключается в методе ROUND в PHP и Javascript, результаты вычислений не совпадают!?

echo round(175.5); // 176 echo round(-175.5); // -176 
console.log(Math.round(175.5)); // 176 console.log(Math.round(-175.5)); // -175  

кто-нибудь знает почему? и как сделать Javascript и PHP одинаковыми результатами?

Это не проблема, это хорошо документально

Если дробная часть равна 0,5, аргумент округляется до следующее целое число в направлении + ∞. Заметим, что это отличается от многоязычных (круглых) функций, которые часто в этом случае следующее целое от нуля, вместо этого (давая другой результат в случай отрицательных чисел с дробной частью ровно 0,5).

Если вы хотите иметь такое же поведение в Javascript, я бы использовал

var n = -175.5; var round = Math.round(Math.abs(n))*(-1) 

Быстрое решение состоит в том, чтобы сделать следующее:

echo round(-175.5, 0, PHP_ROUND_HALF_DOWN); // -175 

Существуют и другие способы выбора:

Дополнительную информацию см. в документации.

Эта функция будет вести себя так же, как в javascript:

function jsround($float, $precision = 0) < if($float < 0)< return round($float, $precision, PHP_ROUND_HALF_DOWN); >return round($float, $precision); > 
console.log(Math.round(175.5)); // 176 console.log(Math.round(-175.5)); // -175  

175.5 его круглое значение 176 это значение увеличивается.

-175.5 круглое значение – -175. Потому что, когда я округляю -175.5, тогда это также увеличивает значение -175 > ​​-176.

Чтобы управлять им, используйте ceil и floor для округления. Таким образом, вы можете выбрать, какой способ округлить

Источник

Округление чисел в PHP

В PHP для округления чисел применяются следующие функции:

Округление к ближайшему целому

Функция round($num, $precision) возвращает округлённое значение $num с указанной точностью $precision (количество цифр после запятой).

echo round(111.455); // 111 // Один знак после запятой echo round(111.455, 1); // 111.5 // Два знака после запятой echo round(111.455, 2); // 111.46

Также функция round() может округлять целую часть числа, для этого нужно указать отрицательный $precision .

// Один знак перед запятой echo round(111.455, -1); // 110 // Два знака перед запятой echo round(111.455, -2); // 100

Третьим аргументом функции можно повлиять способ округления.

PHP_ROUND_HALF_UP Округляет от нуля, когда следующий знак находится посередине.
То есть округляет 1.5 в 2 и -1.5 в -2.
PHP_ROUND_HALF_DOWN Округляет к нулю, когда следующий знак находится посередине.
То есть округляет 1.5 в 1 и -1.5 в -1.
PHP_ROUND_HALF_EVEN Округляет до ближайшего чётного значения, когда следующий знак находится посередине.
То есть округляет 1.5 и 2.5 в 2.
PHP_ROUND_HALF_ODD Округляет до ближайшего нечётного значения, когда следующий знак находится посередине.
То есть округляет 1.5 в 1 и 2.5 в 3.

Округление к большему

Функция ceil($num) – всегда округляет число в большую сторону.

echo ceil(1.1); // 2 echo ceil(1.5); // 2 echo ceil(1.6); // 2

Источник

Оцените статью