14.24 Точная арифметика
MySQL поддерживает точную арифметику: обработку числовых значений, которая приводит к чрезвычайно точным результатам и высокому контролю над недопустимыми значениями. Точная арифметика основана на этих двух функциях:
Режимы SQL, которые контролируют, насколько строго сервер проверяет приемлемость или отклонение некорректных данных.
Библиотека MySQL для арифметики с фиксированной запятой.
Эти функции имеют несколько последствий для числовых операций и обеспечивают высокую степень соответствия стандарту SQL:
Точные вычисления: Для чисел с точным значением вычисления не вводят ошибок с плавающей запятой. Вместо этого используется точная точность. Например, MySQL рассматривает число, такое как
.0001, как точное значение, а не как приближение, и суммирование его 10 000 раз даёт результат ровно1, а не значение, которое просто “близко” к 1.Определённое поведение округления: Для чисел с точным значением результат функции
ROUND()зависит от ее аргумента, а не от внешних факторов, таких как работа базовой библиотеки C.Независимость от платформы: Операции с точными числовыми значениями одинаковы на разных платформах, таких как Windows и Unix.
Контроль над обработкой недопустимых значений: Переполнение и деление на ноль могут быть обнаружены и обработаны как ошибки. Например, вы можете обработать значение, слишком большое для столбца, как ошибку, а не обрезать значение, чтобы оно находилось в диапазоне типа данных столбца. Аналогично, вы можете обработать деление на ноль как ошибку, а не как операцию, которая даёт результат
NULL. Выбор подхода определяется настройкой режима SQL сервера.
В данном обсуждении рассматриваются различные аспекты работы точной арифметики, включая возможные несовместимости со старыми приложениями. В конце приведены примеры, демонстрирующие, как MySQL обрабатывает числовые операции точно. Для получения информации о настройке режима SQL см. Раздел 7.1.11, «Режимы SQL сервера».
© 2025 Oracle
Licensed under the GPLv2 License.