Преобразовать величину в логарифмическую шкалу и обратно

Учебные задачи

Показываем десятичную шкалу 1000 → 3 и натуральную шкалу для коэффициента, проверяя обратное преобразование.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Все значения учебные и создаются в памяти; документы, регистры и рабочие данные не изменяются.

  2. Выполняйте на сервере учебной базы. Представление десятичного разделителя в сообщениях зависит от локали.


Величина = 1000;
Если Величина <= 0 Тогда
    ВызватьИсключение "Логарифмическая шкала требует положительного значения";
КонецЕсли;
ДесятичныйПоказатель = Log10(Величина);
Восстановленная = Pow(10, ДесятичныйПоказатель);
Сообщить(ДесятичныйПоказатель);
Сообщить(Восстановленная);
НатуральныйКоэффициент = Exp(2);
ОбратныйПоказатель = Log(НатуральныйКоэффициент);
Сообщить(Формат(НатуральныйКоэффициент, "ЧДЦ=6"));
Сообщить(Формат(ОбратныйПоказатель, "ЧДЦ=6"));
Если Восстановленная < 999.999999 Или Восстановленная > 1000.000001 Тогда
    ВызватьИсключение "Десятичная шкала не восстановилась в пределах допуска";
КонецЕсли;
Если ОбратныйПоказатель < 1.999999 Или ОбратныйПоказатель > 2.000001 Тогда
    ВызватьИсключение "Натуральная шкала не восстановилась в пределах допуска";
КонецЕсли;

Разбор по шагам

  1. Log10 даёт показатель степени основания 10, поэтому 1000 соответствует 3.

  2. Pow с основанием 10 выполняет обратное преобразование.

  3. Exp использует основание e, обратная функция для него — Log, а не Log10.

  4. Для преобразований применяем допуск и отказываемся от нулевого или отрицательного исходного значения.

Как проверить результат

  1. Десятичный показатель около 3, восстановленная величина около 1000.

  2. Exp(2) около 7.389056, Log(Exp(2)) около 2.

  3. Замените Величина на 0: сработает понятная проверка до вызова Log10.

Ожидаемый результат

Обе логарифмические шкалы прошли предусмотренную самопроверку при выполнении урока.

На что обратить внимание

  1. Основание логарифма — часть контракта вычисления; Log и Log10 нельзя подменять друг другом.

  2. Экстремальные аргументы могут выйти за числовые возможности платформы; пример использует небольшие значения.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.