[Ликбез]

Форма входа
Логин:
Пароль:

Меню сайта


Скрипты и коды для юкоз - Форум аццкого кодера » Системные скрипты. Вопросы, решения, примеры при работе с системными функциями. » Округление чисел до десятичных Ucoz

Округление чисел до десятичных Ucoz
[1] Iliz [24.07.2015, 08:42]
Добрый день. Есть проблема с округлением чисел на Ucoz. Пытался на гуглить но ответа не получил.
Вообщем на юкозе есть округление чисел после математических вычислений работает оно так:
Код
<?INT($OTHER2$*1000-1000/4)?>

Но это округление очень грубое до целых и всегда округляет к меньшему числу. Т.е. если число выйдет 2.99, то округлиться до 2.
Поэтому интересует решение (системно или скриптом), что бы округляло до десятичных или сотых.
Возможно такое?
[2] likbezz [24.07.2015, 12:24]
Iliz,
Цитата Iliz, Пт, 24.07.2015, 08:42:39
Но это округление очень грубое до целых и всегда округляет к меньшему числу.

В общем-то, так и написано в справке ..

Цитата Iliz, Пт, 24.07.2015, 08:42:39
Поэтому интересует решение (системно или скриптом), что бы округляло до десятичных или сотых.

Системное - оч сложное, типа так: обрезать число по запятой, сравнить с 5 (если округляем до целых), если больше - то к первой части прибавляем единицу, если меньше - нет... короче - геморрой еще тот..

Скриптом:
Math.round
Код
Math.round(20.49) // 20
Math.round(20.5) // 21

Есть еще:
Math.ceil - округляет все в большую сторону
Math.floor - в меньшую

Для дробных так:
Код
Number(x).toFixed(3);


Но у осла было с toFixed недопонимание... и тогда начинались костыли:
Код
Math.round(99.8556456546 * 10) / 10) // 99.9
Math.round(99.8556456546 * 100) / 100) // 99.86

---
[3] Iliz [24.07.2015, 14:31]
Цитата likbezz, Пт, 24.07.2015, 13:24:02
Но у осла было с toFixed недопонимание...

У какого осла?
А можно пример привести с готовым кодом скрипта для формулы $OTHER2$*1000-1000/4, так я лучше пойму, что имеется в виду.


Сообщение отредактировал Iliz - Пятница, 24.07.2015, 14:33
[4] likbezz [24.07.2015, 19:12]
Iliz,
Цитата Iliz, Пт, 24.07.2015, 14:31:57
У какого осла?

Интернет эксплорера

Цитата Iliz, Пт, 24.07.2015, 14:31:57
А можно пример привести с готовым кодом скрипта для формулы $OTHER2$*1000-1000/4

Код
<input name="other2" type="text" value="4" />
<script type="text/javascript">
alert(Number(+$('input[name="other2"]').val()*1000-1000/4).toFixed(3)); // 3750.000
</script>

- знак + служит для преобразования строки в число
[5] Iliz [26.07.2015, 23:01]
Вообще не работает. А зачем input нужен? Мне нужно, что бы он по формуле высчитывал и выдавал уже конечный результат с округлением.
[6] likbezz [27.07.2015, 03:15]
Iliz,
Цитата Iliz, Вс, 26.07.2015, 23:01:45
Вообще не работает.

http://likbezz.ucoz.ru/_example/_rest/_2014/p1/alert_number.html

Цитата Iliz, Вс, 26.07.2015, 23:01:45
А зачем input нужен?

- это инпут $OTHER2$
Цитата Iliz, Пт, 24.07.2015, 14:31:57
можно пример привести с готовым кодом скрипта для формулы $OTHER2$*1000-1000/4,


Цитата Iliz, Вс, 26.07.2015, 23:01:45
Мне нужно, что бы он по формуле высчитывал и выдавал уже конечный результат с округлением.

Так он и делает
[7] Iliz [27.07.2015, 09:27]
Вы меня не поняли.
Из дополнительного поля ($OTHER2$) при добавление материала
берется число. А мне нужно, что бы скрипт пересчитывал - это число по формуле и округлял полученное новое число до сотых.
На странице материала и комментариев к нему у меня выглядит код так.
Код
$OTHER2$ (<?($OTHER2$*1000-1000)/4?> °P)

а отображается, к примеру, так.
1.019 (4.74999999999997 °P)
А надо так что бы отображалось:
1.019 (4.75 °P)


Сообщение отредактировал Iliz - Понедельник, 27.07.2015, 09:34
[8] likbezz [27.07.2015, 11:44]
Iliz,
Цитата Iliz, Пн, 27.07.2015, 09:27:18
а отображается, к примеру, так.
1.019 (4.74999999999997 °P)
А надо так что бы отображалось:
1.019 (4.75 °P)

Код
$OTHER2$ <script type="text/javascript">document.write('('+Number((+$OTHER2$*1000-1000)/4).toFixed(2)+' °P)');</script>


Полная версия сайта