Автокликер Clickermann :: Форум
Основной раздел => Ошибки => Topic started by: TNT on November 13, 2023, 03:53:05 PM
-
(https://i.playground.ru/p/fzTo6Q0xb_2Lva3f_fTA5w.png)
Кусок кода:
print($n)
$n=ROUND($n)+1
Выводит значение $n=94.33333333333
-
(https://i.playground.ru/p/fzTo6Q0xb_2Lva3f_fTA5w.png)
А что должно быть? Round принимает два параметра, где второй?
$n = ROUND($n, 0)
-
Если бы ROUND() всегда требовал второй параметр, то вопрос бы не возник, но в подавляющем большинстве случаев он прекрасно работает без него.
-
Если бы ROUND() всегда требовал второй параметр, то вопрос бы не возник, но в подавляющем большинстве случаев он прекрасно работает без него.
В этом опасность всех недокументированных свойств. В справке чётко написано
Синтаксис
ROUND (arg, prec)
Параметры
arg - число
prec - точность
Два! параметра. prec не указан опциональным, он обязательный.
Использование недокументированных свойств в любых программах - только на свой страх и риск. Могут возникнуть условия когда поведение может измениться, поэтому в большинстве случаев стараются недокументированные не применять. Такое поведение может измениться и после банального обновления.
Пример
$n = 94.33333333333
print($n)
$n = ROUND($n)
print($n)
HALT
выдаёт ошибку. Если убрать принт который до round - ошибка исчезнет. Это и есть недокументированное свойство. Ну и что, иногда может проскочить без что второго параметра, вот случай когда не прокатило. И сколько ещё таких случаев может быть.