Калькулятор (Windows)

У этого термина существуют и другие значения, см. Калькулятор (значения).
компонент Windows
Калькулятор
Изображение логотипа
Скриншот Обычного режима Калькулятора в Windows 10
Скриншот Обычного режима Калькулятора в Windows 10
Тип компонента Калькулятор
Включён в Начиная с Windows 1.0
Сайт aka.ms/calculator
Логотип Викисклада Медиафайлы на Викискладе

Калькулятор (calc.exe) — программа Microsoft Windows, предназначенная для выполнения несложных вычислительных операций: сложения, вычитания, умножения и деления и т. д. В калькуляторе также предусмотрены возможности выполнения более сложных операций для инженерных и статистических вычислений.

Интерфейс программы спроектирован таким образом, чтобы имитировать внешний вид реального калькулятора. Его «кнопки» можно нажимать мышкой. Возможен ввод с дополнительной цифровой клавиатуры. Также можно вставлять математические выражения из буфера обмена и получать результат (например, набрать в Блокноте «2*2=», скопировать и вставить в Калькулятор, на «экране» которого появится ответ «4»).

Режимы работы

Калькулятор до версии, включённой в состав Windows 7, работал в двух режимах: «Обычный» и «Инженерный» (переключение через меню «Вид»). Состояние хранится в файле win.ini, секция [SciCalc]. При переключении режимов экран очищается.

В обычном и инженерном режимах отличается порядок выполнения операций:

  • в обычном режиме нажатие 1+1*2= даст ответ 4
  • в инженерном режиме 1+1*2= даёт в результате 3

Обычный режим

  • В обычном режиме представлены функции квадратного корня, процентов, обратной величины (также и в расширенном режиме).
  • Доступны манипуляции с памятью (одна ячейка). Есть индикатор.

Инженерный режим

В дополнение к обычному режиму доступны:

  • тригонометрические и гиперболические (флажок «Hyp») функции, обратные им функции, которые доступны через флажок «Inv» (сбрасывается автоматически), натуральный и десятичный логарифмы, натуральная (тоже доступна через «Inv») и десятичная экспоненты, возведение в степень и извлечение корня (отдельно реализованы вторая, третья и произвольная степени), а также число π {\displaystyle \pi } .
  • перевод долей градуса в минуты и секунды (обратно через флажок «Inv»), вычисление факториала, а для нецелого аргумента — пи-функции, которая является обобщением факториала и определяется через гамма-функцию как Π ( x ) = Γ ( x + 1 ) {\displaystyle \Pi (x)=\Gamma (x+1)} .
  • группировка операций (кнопки со скобками, есть индикатор уровня вложенности), переключение режимов отображения (фиксированная/плавающая точка).
  • вычисление остатка от деления
  • побитовые операции: AND, OR, NOT, XOR. Перед вычислением дробная часть отбрасывается.
  • сдвиг влево (сдвиг вправо через флажок «Inv»)

Тригонометрия

Расчеты в градусах, радианах, градах (переключатель доступен только в режиме десятичной системы счисления)

Недесятичные системы счисления

Переключатель разрядности обрабатываемых данных (8, 4, 2, 1 байт).

Функция логарифм (log) работает только в десятичном (Dec) и в шестнадцатеричном (Hex) режимах. В двоичном режиме (Bin) и в восьмеричном режиме (Oct) функция логарифм (log) не работает.

Поразрядные логические операции и возможность работы с системами счисления, отличными от десятичной начиная с версии Windows 7 и Windows 8 перенесены в новый режим «Программист».

Статистический режим

Активизируется по кнопке «Sta» (доступна в инженерном режиме), показывается окно «статистика», доступны кнопки манипуляции данными и базовые статистические функции.

Режим «Программист»

Появился в Windows 7 за счет переноса из инженерного режима следующих функций:

  • логические операции: AND, OR, XOR;
  • логические (Rsh, Lsh) и циклические (RoR, RoL) сдвиги вправо и влево (буква R в операции означает «вправо», буква L — «влево»)
    Rsh — сдвиг битов двоичного числа вправо n раз;
    Lsh — сдвигает биты двоичного числа влево n раз, каждый раз заполняя младший бит нулём, а старший бит выталкивается (знак числа при этом не сохраняется);
    RoR — циклический сдвиг вправо, сдвигает все биты двоичного числа на один разряд, каждый раз выталкиваемый младший бит;
  • возможность обработки данных в двоичной, восьмеричной и шестнадцатеричной системах счисления.

При работе с любой системой счисления в данном режиме под «дисплеем» показывается двоичное представление текущего результата, разделённое на тетрады. Обрабатываемые данные представляются в целочисленном формате (дробная часть результата всегда отбрасывается) размером от 8 до 64 бит в дополнительном коде.

Дополнительные возможности

При вставке из буфера следующие последовательности символов воспринимаются как команды:[1]

:c Очистка памяти
:e Включение режима ввода десятичных чисел в экспоненциальной нотации
:m Занесение отображаемого числа в память
:p Прибавление отображаемого числа к числу, хранящемуся в памяти
:q Очистка калькулятора для новых вычислений
:r Отображение числа, хранящегося в памяти
\ .

Ограничения и ошибки в работе

На текущий момент во всех версиях Windows, включая 64-разрядные, калькулятор имеет ограничение при выполнении операции возведения числа в целую степень. Данное ограничение, связанное с переполнением, возникает при возведении в целую степень, если показатель степени нельзя представить 32-разрядным целым числом. В этом случае выдаётся сообщение «Недопустимый ввод». В то же время использование приблизительно такого же, но дробного показателя степени не приводит к ошибке. Пусть, например, нужно вычислить 0.999999999 3000000000 {\displaystyle 0.999999999^{-3000000000}} . Непосредственное вычисление выражения приводит к ошибке, однако, например, выражение 0.999999999 3000000000.5 {\displaystyle 0.999999999^{-3000000000.5}} корректно вычисляется и даёт результат 20.085536963358741652581860232205 {\displaystyle 20.085536963358741652581860232205} . Из него можно получить:

0.999999999 3000000000 = 0.999999999 3000000000.5 0.999999999 = 20.085536953315973168391797284239 {\displaystyle 0.999999999^{-3000000000}=0.999999999^{-3000000000.5}\cdot {\sqrt {0.999999999}}=20.085536953315973168391797284239}

Указанное выше ограничение при возведении в степень приводит к появлению бага (его уже вряд ли можно назвать ограничением). Он заключается в том, что при взятии противоположной величины от 32-разрядного целого числа 2 31 = 2147483648 {\displaystyle -2^{31}=-2147483648} происходит переполнение, которое корректно не обрабатывается и приводит к аварийному завершению работы программы. Например, сбой может происходить при вычислении выражения

0.999999999 2147483648 {\displaystyle 0.999999999^{-2147483648}} .

Правильный результат 8.5632830377708104878252734036038 {\displaystyle 8.5632830377708104878252734036038} можно получить, изменив показатель степени, например следующим образом:

0.999999999 2147483648 = ( 0.999999999 2 ) 1073741824 {\displaystyle 0.999999999^{-2147483648}=(0.999999999^{2})^{-1073741824}}

или

0.999999999 2147483648 = 0.999999999 2147483647 / 0.999999999 {\displaystyle 0.999999999^{-2147483648}=0.999999999^{-2147483647}/0.999999999} .

Ещё ряд ограничений связан с непродуманной реализацией вычислительных алгоритмов, в результате чего для некоторых значений происходит потеря точности, иногда приводящая к существенным ошибкам. Так, стандартная формула вычисления ареа-синуса при больших по модулю отрицательных значениях аргумента приводит к вычитанию близких чисел и, как следствие, потере значащих цифр результата. Вычислим, например, с помощью калькулятора Windows ареа-синус ( sinh 1 {\displaystyle \operatorname {sinh} ^{-1}} ) от числа 3 , 5 e + 100 {\displaystyle -3,5e+100} . Получаем результат 149 , 01606898593917039273345339555 {\displaystyle 149,01606898593917039273345339555} , не имеющий ничего общего с правильным ответом 232 , 20441944845988170690449821188 {\displaystyle -232,20441944845988170690449821188} . В данном случае правильный ответ можно получить, пользуясь свойством нечётности функции: arsh x = arsh ( x ) {\displaystyle \operatorname {arsh} x=-\operatorname {arsh} (-x)} .

Для гиперболического тангенса ( tanh {\displaystyle \operatorname {tanh} } ) некоторые значения аргумента признаются недействительными, хотя на самом деле функция существует и не вызывает переполнение для любых значений аргумента. А именно, при x > 10000 {\displaystyle x>10000} или x < 1000 {\displaystyle x<-1000} выдаётся сообщение «Недопустимый ввод». Данное ограничение является необоснованным, так как значения функции для указанных значений аргумента примерно равны 1 {\displaystyle 1} и 1 {\displaystyle -1} соответственно.

Развитие

В Windows 7 реализован значительно обновлённый Калькулятор. В дополнение к Обычному и Инженерному, появились режимы для программистов (Programmer) и статистический (Statistics). В каждом режиме (кроме статистического) ведется история вычислений. Справа от основной панели калькулятора можно открыть панели расчёта разницы между датами, расчёта расхода топлива или платежей по кредиту, конвертации физических величин.

В режиме программиста можно выполнять операции только над целыми числами, а в инженерном режиме нельзя переводить числа из одной системы счисления в другую. Это является существенным недостатком новой версии Калькулятора.

В Windows 8 получил дополнительный Metro-аналог, а в Windows 10 был полноценно заменен на UWP-версию[что?].

29 января 2019 года Microsoft открыла исходный код калькулятора, опубликовав его на GitHub[2] и представив планы его развития[3].

Примечания

  1. calc.chm Последовательности клавиш для вызова функций
  2. Microsoft Corporation. Windows Calculator: A simple yet powerful calculator that ships with Windows: Microsoft/calculator (англ.) // GitHub : сайт. — 2019. — 6 March. Архивировано 6 марта 2019 года.
  3. Microsoft Corporation. Windows Calculator Roadmap (англ.) // GitHub : сайт. — 2019. — 6 March. Архивировано 6 марта 2019 года.
Перейти к шаблону «Компоненты Microsoft Windows»
Основные
Службы
управления
Приложения
Win32
UWP
Исторические
Игры
Ядро ОС
Службы
Файловые
системы
Серверы
Архитектура
  • NT
  • Диспетчер объектов
  • Пакеты запроса ввода/вывода
  • Диспетчер транзакций ядра
  • Диспетчер логических дисков
  • Диспетчер учётных записей безопасности
  • Защита ресурсов
  • lsass.exe
  • csrss.exe
  • smss.exe
  • spoolsv.exe
  • Запуск
Безопасность
Совместимость
Перейти к шаблону «Свободное и открытое программное обеспечение Microsoft»
Общая информация
Программное
обеспечение
Приложения
Игры
  • Allegiance[англ.]
Языки
программирования
Фреймворки и
средства разработки
Операционные
системы
Прочее
  • ChronoZoom
  • Project Mu
  • SILK
  • TLAPS
  • TPM 2.0 Reference Implementation
  • WikiBhasha
Лицензии
Связанные темы
  • .NET Foundation
  • F Sharp Software Foundation
  • Microsoft Open Specification Promise
  • Outercurve Foundation
Категория Категория