acos, sin, tanh, exp, log, sqrt
SAP NetWeaver AS ABAP, выпуск 751, ©Авторское право, 2017 SAP AG. Все права защищены.
ABAP — Документация по ключевым словам → ABAP – Справочник → Обработка внутренних данных → Численные расчеты → Числовые функции →
acos, sin, tanh, exp, log, sqrt — функции с плавающей запятой
В следующей таблице показаны функции с плавающей запятой, которые ожидают плавающая запятая число как безымянный аргумент. Функции с плавающей запятой перегружены, поэтому код возврата может иметь тип decfloat34 или f. Десятичные числа с плавающей запятой по-прежнему возможны только в качестве аргументов exp, log, log10 и sqrt.
Синтаксис
… функция (аргумент) …
Эффект
Аргумент функции с плавающей запятой должен быть одним объектом данных вне арифметического выражения и может быть самим арифметическим выражением внутри арифметического выражения.
Эффект функций с плавающей запятой:
| Функциональная функция | Значение | Диапазон определения |
| или | арккосинус | [-1,1], без сброса поплавка34 |
| как | арксинус | [-1,1], без сброса поплавка34 |
| атан | арктангенс | -, без дефлектора34 |
| потому что | косинус | -, без дефлектора34 |
| грех | синус | -, без дефлектора34 |
| желто-коричневый | тангенс | -, без дефлектора34 |
| сош | гиперболический косинус | -, без дефлектора34 |
| гиперболический синус | -, без дефлектора34 | |
| танх | гиперболический тангенс | -, без дефлектора34 |
| эксп | Экспоненциальная функция для основания e | [-709, 709] для типа f и [-14144, 14149] для типа decfloat34 |
| журнал | Натуральный логарифм | > 0 |
| лог10 | Логарифм по основанию 10 | > 0 |
| кв | Квадратный корень | >= 0 |
Функции, в которых указано «no decfloat34», в настоящее время не могут иметь
тип расчета
дефлоат34.
Если одна из этих функций указана в выражении с этим типом вычисления, возникает синтаксическая ошибка или возникает исключение CX_SY_UNSUPPORTED_FUNCTION.
Следующее относится к арифметика с плавающей запятой, в которой вычисляется функция с плавающей запятой, и к типу данных кода возврата:
- Если аргумент имеет тип decfloat16 или decfloat34, функция с плавающей запятой вычисляется в десятичной арифметике с плавающей запятой, а код возврата имеет тип decfloat34.
- Если в арифметическом выражении используется функция с плавающей запятой, тип вычисления — decfloat34 или содержит числовое выражение типа decfloat34 в качестве аргумента, он также вычисляет код возврата с тип decfloat34, а аргумент сначала преобразуется в тип данных decfloat34, если это необходимо.
- Во всех остальных случаях функции с плавающей запятой используют двоичную арифметику с плавающей запятой для вычисления
код возврата с типом f, и аргумент сначала преобразуется в тип данных f, если это необходимо.

Функции с диапазоном определения требуют, чтобы значение arg находилось в пределах заданные пределы. Гарантируется, что аргументы в пределах диапазона определения не содержат ошибок для экспоненциальной функции exp, поскольку тогда результаты находятся в пределах диапазона. диапазоны значений для двоичный или десятичная дробь плавающая запятая номера в соответствии с IEEE-754. Для аргументов меньше -709, результат для двоичного числа с плавающей запятой количество точек (в зависимости от платформы) является субнормальным числом, 0, или обрабатываемое исключение класса CX_SY_ARITHMETIC_OVERFLOW возникает из определенного значения.
Тригонометрические функции sin, cos и tan определены для любых аргументов, но результаты становятся неточными, если аргумент превышает примерно 100 000 000.
Примечания
- Функция atan не определена для нечетных чисел, кратных пи/2, но
диапазон определения atan, тем не менее, ограничен, поскольку аргумент этой функции никогда не может содержать точное значение pi/2.

- Описанные здесь функции — это некоторые из функций, которые можно использовать в устаревших расширенные функциональные позиции операндов, даже если их аргументом является один объект данных.
Пример
Все результаты во внутренней таблице должны иметь значение 1 или значение, очень близкое к этому.
ТАБЛИЦА ТИПОВ ДАННЫХ itab f С ПУСТЫМ КЛЮЧОМ.
itab = ЗНАЧЕНИЕ #( ДЛЯ i = 0 ДО i > 64
ПУСТЬ n = CONV f ( i / 10 ) IN
(sin(n) ** 2 + cos(n) ** 2)).
cl_demo_output=>дисплей( itab ).
Исключения
Обрабатываемые исключения
CX_SY_ARG_OUT_OF_DOMAIN
- Причина: недопустимый вызов acos
. Ошибка выполнения: COMPUTE_ACOS_DOMAIN. - Причина: недопустимый вызов asin
. Ошибка выполнения: COMPUTE_ASIN_DOMAIN 9.0140 - Причина: недопустимый вызов cos
. Ошибка выполнения: COMPUTE_COS_DOMAIN. - Причина: Неверный вызов log10
Ошибка выполнения: COMPUTE_LOG10_ERROR - Причина: неверный вызов журнала
.


