• Страница 1 из 1
  • 1
Модератор форума: likbezz  
Скрипты и коды для юкоз - Форум аццкого кодера » Вопросы по верстке, дизайну, управлению и настройки модулей СMS от uCoz » Системные скрипты. Вопросы, решения, примеры при работе с системными функциями. » Округление чисел до десятичных Ucoz
Округление чисел до десятичных Ucoz
Дата: Пятница, 24.07.2015, 08:42 |
Iliz
Подполковник
Группа: Пользователи
Сообщений: 134
Награды: 0
Репутация: 0
Статус: Offline


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

Но это округление очень грубое до целых и всегда округляет к меньшему числу. Т.е. если число выйдет 2.99, то округлиться до 2.
Поэтому интересует решение (системно или скриптом), что бы округляло до десятичных или сотых.
Возможно такое?


 
Дата: Пятница, 24.07.2015, 12:24 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


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

---


 
Дата: Пятница, 24.07.2015, 14:31 |
Iliz
Подполковник
Группа: Пользователи
Сообщений: 134
Награды: 0
Репутация: 0
Статус: Offline


Цитата likbezz, Пт, 24.07.2015, 13:24:02
Но у осла было с toFixed недопонимание...

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


Сообщение отредактировал Iliz - Пятница, 24.07.2015, 14:33
 
Дата: Пятница, 24.07.2015, 19:12 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


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>

- знак + служит для преобразования строки в число


 
Дата: Воскресенье, 26.07.2015, 23:01 |
Iliz
Подполковник
Группа: Пользователи
Сообщений: 134
Награды: 0
Репутация: 0
Статус: Offline


Вообще не работает. А зачем input нужен? Мне нужно, что бы он по формуле высчитывал и выдавал уже конечный результат с округлением.

 
Дата: Понедельник, 27.07.2015, 03:15 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


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
Мне нужно, что бы он по формуле высчитывал и выдавал уже конечный результат с округлением.

Так он и делает


 
Дата: Понедельник, 27.07.2015, 09:27 |
Iliz
Подполковник
Группа: Пользователи
Сообщений: 134
Награды: 0
Репутация: 0
Статус: Offline


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

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


Сообщение отредактировал Iliz - Понедельник, 27.07.2015, 09:34
 
Дата: Понедельник, 27.07.2015, 11:44 |
likbezz
Аццкий кодер
Группа: Администраторы
Сообщений: 9093
Награды: 23
Репутация: 459
Статус: Unknown


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>


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


Мобильная версия