Основной раздел > Ошибки

Ошибка при вызове вункции ROUND()

(1/1)

TNT:

Кусок кода:

--- Code: ---print($n)
$n=ROUND($n)+1
--- End code ---
Выводит значение $n=94.33333333333

Vint:

--- Quote from: TNT on November 13, 2023, 03:53:05 PM ---

--- End quote ---

А что должно быть? Round принимает два параметра, где второй?

--- Code: (clickermann) ---$n = ROUND($n, 0)
--- End code ---

TNT:
Если бы ROUND() всегда требовал второй параметр, то вопрос бы не возник, но в подавляющем большинстве случаев он прекрасно работает без него.

Vint:

--- Quote from: TNT on November 14, 2023, 08:25:13 PM ---Если бы ROUND() всегда требовал второй параметр, то вопрос бы не возник, но в подавляющем большинстве случаев он прекрасно работает без него.

--- End quote ---

В этом опасность всех недокументированных свойств. В справке чётко написано

--- Quote ---Синтаксис
ROUND (arg, prec)

Параметры
arg - число
prec - точность

--- End quote ---
Два! параметра. prec не указан опциональным, он обязательный.

Использование недокументированных свойств в любых программах - только на свой страх и риск. Могут возникнуть условия когда поведение может измениться, поэтому в большинстве случаев стараются недокументированные не применять. Такое поведение может измениться и после банального обновления.

Пример

--- Code: (clickermann) ---$n = 94.33333333333
print($n)
$n = ROUND($n)
print($n)

HALT
--- End code ---
выдаёт ошибку. Если убрать принт который до round - ошибка исчезнет. Это и есть недокументированное свойство. Ну и что, иногда может проскочить без что второго параметра, вот случай когда не прокатило. И сколько ещё таких случаев может быть.

Navigation

[0] Message Index

Go to full version