Методы округления чисел в javascript
Содержание:
- Встроенные функции
- ПримерыExamples
- 3 Потеря точности при работе с вещественными числами
- Неточные вычисления
- Способы округления чисел
- parseInt и parseFloat
- ПримерыExamples
- Округление десятичных дробей
- 1 Округление вещественных чисел
- Обозначения
- Методы
- Различие округления в Python 2 и Python 3
- Как проверить, активирована ли Windows 10?
- Комментарии
- Floor(Double)
- АргументыArguments
Встроенные функции
Для операции округления в Python есть встроенные функции – и
round
– округляет число (number) до ndigits знаков после запятой. Это стандартная функция, которая для выполнения не требует подключения модуля math.
По умолчанию операция проводится до нуля знаков – до ближайшего целого числа. Например:
Чтобы получить целый показатель, результат преобразовывают в .
Синтаксически функция вызывается двумя способами.
- – это округление числа до целого, которое расположено ближе всего. Если дробная часть равна 0,5, то округляют до ближайшего четного значения.
- – данные округляют до знаков после точки. Если округление проходит до сотых, то равен «2», если до тысячных – «3» и т.д.
int
– встроенная функция, не требующая подключения дополнительных модулей. Её функция – преобразование действительных значений к целому путем округления в сторону нуля. Например
Для положительных чисел функция аналогична функции , а для отрицательных – аналогично . Например:
Чтобы число по int преобразовать по математическим правилам, нужно выполнить следующие действия.
- Если число положительное, добавить к нему 0,5.
- Если число отрицательное, добавить -0,5.
Синтаксически преобразование оформляется так:
ПримерыExamples
A.A. Использование функции ROUND и приближенийUsing ROUND and estimates
Следующий пример показывает два выражения, которые демонстрируют, используя , что последний знак всегда является приближением.The following example shows two expressions that demonstrate by using the last digit is always an estimate.
Результирующий набор:Here is the result set.
В следующем примере показаны округление и аппроксимация.The following example shows rounding and approximations.
Результирующий набор:Here is the result set.
В.C. Использование функции ROUND для усеченияUsing ROUND to truncate
В следующем примере используются две инструкции для демонстрации различия между округлением и усечением.The following example uses two statements to demonstrate the difference between rounding and truncation. Первая инструкция округляет результат.The first statement rounds the result. Вторая инструкция усекает результат.The second statement truncates the result.
Результирующий набор:Here is the result set.
3 Потеря точности при работе с вещественными числами
При работе с вещественными числами всегда нужно иметь в виду, что вещественные числа не точные. Всегда будут ошибки округления, ошибки преобразования из десятичной системы в двоичную и, наконец, самое частое – потеря точности при сложении/вычитании чисел слишком разных размерностей.
Последнее — самая неожиданная ситуация для новичков в программировании.
Если из числа вычесть , мы получим опять .
Вычитание чисел слишком разных размерностей | Объяснение |
---|---|
Второе число слишком маленькое, и его значащая часть игнорируется (выделено серым). Оранжевым выделены 15 значащих цифр. |
Что тут сказать, программирование — это не математика.
Неточные вычисления
Внутри JavaScript число представлено в виде 64-битного формата IEEE-754. Для хранения числа используется 64 бита: 52 из них используется для хранения цифр, 11 из них для хранения положения десятичной точки (если число целое, то хранится 0), и один бит отведён на хранение знака.
Если число слишком большое, оно переполнит 64-битное хранилище, JavaScript вернёт бесконечность:
Наиболее часто встречающаяся ошибка при работе с числами в JavaScript – это потеря точности.
Посмотрите на это (неверное!) сравнение:
Да-да, сумма и не равна .
Странно! Что тогда, если не ?
Но почему это происходит?
Число хранится в памяти в бинарной форме, как последовательность бит – единиц и нулей. Но дроби, такие как , , которые выглядят довольно просто в десятичной системе счисления, на самом деле являются бесконечной дробью в двоичной форме.
Другими словами, что такое ? Это единица делённая на десять — , одна десятая. В десятичной системе счисления такие числа легко представимы, по сравнению с одной третьей: , которая становится бесконечной дробью .
Деление на гарантированно хорошо работает в десятичной системе, но деление на – нет. По той же причине и в двоичной системе счисления, деление на обязательно сработает, а становится бесконечной дробью.
В JavaScript нет возможности для хранения точных значений 0.1 или 0.2, используя двоичную систему, точно также, как нет возможности хранить одну третью в десятичной системе счисления.
Числовой формат IEEE-754 решает эту проблему путём округления до ближайшего возможного числа. Правила округления обычно не позволяют нам увидеть эту «крошечную потерю точности», но она существует.
Пример:
И когда мы суммируем 2 числа, их «неточности» тоже суммируются.
Вот почему – это не совсем .
Не только в JavaScript
Справедливости ради заметим, что ошибка в точности вычислений для чисел с плавающей точкой сохраняется в любом другом языке, где используется формат IEEE 754, включая PHP, Java, C, Perl, Ruby.
Можно ли обойти проблему? Конечно, наиболее надёжный способ — это округлить результат используя метод toFixed(n):
Также можно временно умножить число на 100 (или на большее), чтобы привести его к целому, выполнить математические действия, а после разделить обратно. Суммируя целые числа, мы уменьшаем погрешность, но она все равно появляется при финальном делении:
Таким образом, метод умножения/деления уменьшает погрешность, но полностью её не решает.
Забавный пример
Попробуйте выполнить его:
Причина та же – потеря точности. Из 64 бит, отведённых на число, сами цифры числа занимают до 52 бит, остальные 11 бит хранят позицию десятичной точки и один бит – знак. Так что если 52 бит не хватает на цифры, то при записи пропадут младшие разряды.
Интерпретатор не выдаст ошибку, но в результате получится «не совсем то число», что мы и видим в примере выше. Как говорится: «как смог, так записал».
Два нуля
Другим забавным следствием внутреннего представления чисел является наличие двух нулей: и .
Все потому, что знак представлен отдельным битом, так что, любое число может быть положительным и отрицательным, включая нуль.
В большинстве случаев это поведение незаметно, так как операторы в JavaScript воспринимают их одинаковыми.
Способы округления чисел
Для округления чисел придумано много способов, они не лишены недостатков, однако часто используются для решения задач. Разберёмся в тонкостях каждого из них.
Если используется стандартная библиотека math, то в начале кода её необходимо подключить. Сделать это можно, например, с помощью инструкции: .
math.ceil() – округление чисел в большую сторону
Функция получила своё имя от термина «ceiling», который используется в математике для описания числа, которое больше или равно заданному.
Любая дробь находится в целочисленном интервале, например, 1.2 лежит между 1 и 2. Функция определяет, какая из границ интервала наибольшая и записывает её в результат округления.
Пример:
math.ceil(5.15) # = 6 math.ceil(6.666) # = 7 math.ceil(5) # = 5
Важно помнить, что функция определяет наибольшее число с учётом знака. То есть результатом округления числа -0.9 будет 0, а не -1.
math.floor() – округление чисел в меньшую сторону
Функция округляет дробное число до ближайшего целого, которое меньше или равно исходному. Работает аналогично функции , но с округлением в противоположную сторону.
Пример:
math.floor(7.9) # = 7 math.floor(9.999) # = 9 math.floor(-6.1) # = -7
math.trunc() – отбрасывание дробной части
Возвращает целое число, не учитывая его дробную часть. То есть никакого округления не происходит, Python просто забывает о дробной части, приводя число к целочисленному виду.
Примеры:
math.trunc(5.51) # = 5 math.trunc(-6.99) # = -6
Избавиться от дробной части можно с помощью обычного преобразования числа к типу int. Такой способ полностью эквивалентен использованию .
Примеры:
int(5.51) # = 5 int(-6.99) # = -6
Нормальное округление
Python позволяет реализовать нормальное арифметическое округление, использовав функцию преобразования к типу int.
И хотя работает по другому алгоритму, результат её использования для положительных чисел полностью аналогичен выводу функции floor(), которая округляет числа «вниз». Для отрицательных аналогичен функции ceil().
Примеры:
math.floor(9.999) # = 9 int(9.999) # = 9 math.ceil(-9.999) # = -9 int(-9.999) # = -9
Чтобы с помощью функции int() округлить число по математическим правилам, необходимо добавить к нему 0.5, если оно положительное, и -0.5, если оно отрицательное.
Тогда операция принимает такой вид: int(num + (0.5 if num > 0 else -0.5)). Чтобы каждый раз не писать условие, удобно сделать отдельную функцию:
def int_r(num): num = int(num + (0.5 if num > 0 else -0.5)) return num
Функция работает также, как стандартная функция округление во второй версии Python (арифметическое округление).
Примеры:
int_r(11.5) # = 12 int_r(11.4) # = 11 int_r(-0.991) # = -1 int_r(1.391) # = 1
round() – округление чисел
round() – стандартная функция округления в языке Python. Она не всегда работает так, как ожидается, а её алгоритм различается в разных версиях Python.
В Python 2
Во второй версии Python используется арифметическое округление. Оно обладает постоянно растущей погрешностью, что приводит к появлению неточностей и ошибок.
Увеличение погрешности вызвано неравным количеством цифр, определяющих, в какую сторону округлять. Всего 4 цифры на конце приводят к округлению «вниз», и 5 цифр к округлению «вверх».
Помимо этого, могут быть неточности, например, если округлить число 2.675 до второго знака, получится число 2.67 вместо 2.68. Это происходит из-за невозможности точно представить десятичные числа типа «float» в двоичном коде.
В Python 3
В третьей версии Python используется банковское округление. Это значит, что округление происходит до самого близкого чётного.
Такой подход не избавляет от ошибок полностью, но уменьшает шанс их возникновения и позволяет программисту добиться большей точности при вычислениях.
Примеры:
round(3.5) # = 4 round(9.5) # = 10 round(6.5) # = 6 round(-6.5) # = -6 round(-7.5) # = -8
Но если вам по каким то причинам нужно округление как в Python 2, то можно воспользоваться функцией написанной нами выше на основе приведения к целому числу.
Округление до сотых
У функции есть ещё один аргумент. Он показывает до какого количества знаков после запятой следует округлять. Таким образом, если нам надо в Python округлить до сотых, этому параметру следует задать значение 2.
Пример округления до нужного знака:
round(3.555, 2) # = 3.56 round(9.515,1) # = 9.5 round(6.657,2) # = 6.66
parseInt и parseFloat
Для явного преобразования к числу можно использовать или . Если строка не является в точности числом, то результат будет :
Единственное исключение — это пробелы в начале строки и в конце, они игнорируются.
В реальной жизни мы часто сталкиваемся со значениями у которых есть единица измерения, например или в CSS. Также во множестве стран символ валюты записывается после номинала . Так как нам получить числовое значение из таких строк?
Для этого есть и .
Они «читают» число из строки. Если в процессе чтения возникает ошибка, они возвращают полученное до ошибки число. Функция возвращает целое число, а возвращает число с плавающей точкой:
Функции вернут , если не смогли прочитать ни одну цифру:
Второй аргумент
Функция имеет необязательный второй параметр. Он определяет систему счисления, таким образом может также читать строки с шестнадцатеричными числами, двоичными числами и т.д.:
ПримерыExamples
A.A. Использование функции ROUND и приближенийUsing ROUND and estimates
Следующий пример показывает два выражения, которые демонстрируют, используя , что последний знак всегда является приближением.The following example shows two expressions that demonstrate by using the last digit is always an estimate.
Результирующий набор:Here is the result set.
В следующем примере показаны округление и аппроксимация.The following example shows rounding and approximations.
Результирующий набор:Here is the result set.
В.C. Использование функции ROUND для усеченияUsing ROUND to truncate
В следующем примере используются две инструкции для демонстрации различия между округлением и усечением.The following example uses two statements to demonstrate the difference between rounding and truncation. Первая инструкция округляет результат.The first statement rounds the result. Вторая инструкция усекает результат.The second statement truncates the result.
Результирующий набор:Here is the result set.
Округление десятичных дробей
При округлении десятичных дробей следует быть особенно внимательным, поскольку десятичная дробь состоит из целой и дробной части. И каждая из этих двух частей имеет свои разряды:
Разряды целой части:
- разряд единиц
- разряд десятков
- разряд сотен
- разряд тысяч
Разряды дробной части:
- разряд десятых
- разряд сотых
- разряд тысячных
Рассмотрим десятичную дробь 123,456 — сто двадцать три целых четыреста пятьдесят шесть тысячных. Здесь целая часть это 123, а дробная часть 456. При этом у каждой из этих частей есть свои разряды
Очень важно не путать их:
Для целой части применяются те же правила округления, что и для обычных чисел. Отличие в том, что после округления целой части и замены нулями всех цифр после сохраняемой цифры, дробная часть полностью отбрасывается.
Например, округлим дробь 123,456 до разряда десятков.
Именно до разряда десятков
, а не разряда десятых
Очень важно не перепутать эти разряды. Разряд десятков
располагается в целой части, а разряд десятых
в дробной
Мы должны округлить 123,456 до разряда десятков. Сохраняемая цифра здесь это 2, а первая из отбрасываемых цифр это 3
Согласно правилу, если при округлении чисел первая из отбрасываемых цифр 0, 1, 2, 3 или 4, то сохраняемая цифра остаётся без изменений.
Значит сохраняемая цифра останется без изменений, а всё остальное заменится нулём. А что делать с дробной частью? Её просто отбрасывают (убирают):
123,456 ≈ 120
Теперь попробуем округлить ту же самую дробь 123,456 до разряда единиц
. Сохраняемая цифра здесь будет 3, а первая из отбрасываемых цифр это 4, которая находится в дробной части:
Согласно правилу, если при округлении чисел первая из отбрасываемых цифр 0, 1, 2, 3 или 4, то сохраняемая цифра остаётся без изменений.
Значит сохраняемая цифра останется без изменений, а всё остальное заменится нулём. Оставшаяся дробная часть будет отброшена:
123,456 ≈ 123,0
Ноль, который остался после запятой тоже можно отбросить. Значит окончательный ответ будет выглядеть следующим образом:
123,456 ≈ 123,0 ≈ 123
Теперь займёмся округлением дробных частей. Для округления дробных частей справедливы те же правила, что и для округления целых частей. Попробуем округлить дробь 123,456 до разряда десятых.
В разряде десятых располагается цифра 4, значит она является сохраняемой цифрой, а первая отбрасываемая цифра это 5, которая находится в разряде сотых:
Согласно правилу, если при округлении чисел первая из отбрасываемых цифр 5, 6, 7, 8 или 9, то сохраняемая цифра увеличивается на единицу.
Значит сохраняемая цифра 4 увеличится на единицу, а остальная часть заменится нулями
123,456 ≈ 123,500
Попробуем округлить ту же самую дробь 123,456 до разряда сотых. Сохраняемая цифра здесь это 5, а первая из отбрасываемых цифр это 6, которая находится в разряде тысячных:
Согласно правилу, если при округлении чисел первая из отбрасываемых цифр 5, 6, 7, 8 или 9, то сохраняемая цифра увеличивается на единицу.
Значит сохраняемая цифра 5 увеличится на единицу, а остальная часть заменится нулями
123,456 ≈ 123,460
Понравился урок? Вступай в нашу новую группу Вконтакте и начни получать уведомления о новых уроках
Многие люди интересуются, как округлять числа. Эта необходимость часто возникает у людей, которые свою жизнь связывают с бухгалтерией или другими видами деятельности, где требуются расчеты. Округление может производиться до целых, десятых и так далее. И необходимо знать, как это делать правильно, чтобы расчеты были более менее точными.
А что такое вообще круглое число? Это то, которое заканчивается на 0 (по большей части). В обыденной жизни умение округлять числа значительно облегчает походы по магазинам. Стоя у кассы, можно приблизительно прикинуть общую стоимость покупок, сравнить, сколько стоит килограмм одноименного товара в различных по весу пакетах. С числами, приведенными к удобной форме, легче производить устные расчеты, не прибегая к помощи калькулятора.
1 Округление вещественных чисел
Как мы уже разбирали, при присваивании переменной типа вещественного числа оно всегда округляется вниз до целого — его дробная часть просто отбрасывается.
А ведь легко можно представить ситуацию, когда дробное число нужно округлить просто до ближайшего целого или вообще вверх. Что делать в этой ситуации?
Для этого и для многих похожих случаев в Java есть класс , у которого есть методы , , .
Метод
Метод округляет число до ближайшего целого:
Но, как говорится, есть нюанс: результат работы этого метода — целочисленный тип (не ). Вещественные числа ведь могут быть очень большими, поэтому разработчики Java решили использовать самый большой целочисленный тип, который есть в Java — .
Поэтому чтобы присвоить результат в переменную типа , программист должен явно указать компилятору, что он согласен с возможной потерей данных (вдруг число не поместится в тип ).
Примеры:
Команда | Результат |
---|---|
Метод
Метод округляет число до целого вверх, примеры:
Команда | Результат |
---|---|
Метод
Метод округляет число до целого вниз, примеры:
Команда | Результат |
---|---|
Хотя, для округления числа до целого вниз, будет проще использовать просто оператор приведения типа — :
Команда | Результат |
---|---|
Если вам сложно запомнить эти команды, вам поможет небольшой урок английского:
- — математика
- — круг/округлять
- — потолок
- — пол
Обозначения
Операция округления числа x к большему (вверх) обозначается следующим образом: ⌈x⌉{\displaystyle \lceil x\rceil }. Аналогично, округление к меньшему (вниз) обозначается ⌊x⌋{\displaystyle \lfloor x\rfloor }. Эти символы (а также английские названия для этих операций — соответственно, ceiling и floor, досл. «потолок» и «пол») были введеныК. Айверсоном в его работе A Programming Language, описавшей систему математических обозначений, позже развившуюся в язык программирования APL. Айверсоновские обозначения операций округления были популяризированы Д. Кнутом в его книге «Искусство программирования».
По аналогии, округление к ближайшему целому часто обозначают как x{\displaystyle \left}. В некоторых прежних и современных (вплоть до конца XX века) работах так обозначалось округление к меньшему; такое использование этого обозначения восходит ещё к работе Гаусса 1808 года (третье его доказательство квадратичного закона взаимности). Кроме того, это же обозначение используется (с другим значением) в нотации Айверсона.
В стандарте Юникод зафиксированы следующие символы:
Названиев Юникоде | Код в Юникоде | Вид | Мнемоникав HTML 4 | Примечания | |
---|---|---|---|---|---|
16-ричный | десятичный | ||||
LEFT CEILING (тж. APL upstile) | 2308 | 8968 | ⌈ | ⌈ | не путать с:
|
RIGHT CEILING | 2309 | 8969 | ⌉ | ⌉ | не путать с:
|
LEFT FLOOR (тж. APL downstile) | 230A | 8970 | ⌊ | ⌊ | не путать с: |
RIGHT FLOOR | 230B | 8971 | ⌋ | ⌋ | не путать с:
|
Методы
В разных сферах могут применяться различные методы округления. Во всех этих методах «лишние» знаки обнуляют (отбрасывают), а предшествующий им знак корректируется по какому-либо правилу.
-
Округление к ближайшему целому (англ. rounding) — наиболее часто используемое округление, при котором число округляется до целого, модуль разности с которым у этого числа минимален. В общем случае, когда число в десятичной системе округляют до N-го знака, правило может быть сформулировано следующим образом:
- если N+1 знак < 5, то N-й знак сохраняют, а N+1 и все последующие обнуляют;
- если N+1 знак ≥ 5, то N-й знак увеличивают на единицу, а N+1 и все последующие обнуляют;
- Например: 11,9 → 12; −0,9 → −1; −1,1 → −1; 2,5 → 3.
- Максимальная дополнительная абсолютная погрешность, вносимая при таком округлении (погрешность округления), составляет ±0,5 последнего сохраняемого разряда.
- Округление к меньшему по модулю (округление к нулю, целое англ. fix, truncate, integer) — самое «простое» округление, поскольку после обнуления «лишних» знаков предшествующий знак сохраняют, то есть технически оно состоит в отбрасывании лишних знаков. Например, 11,9 → 11; −0,9 → 0; −1,1 → −1). При таком округлении может вноситься погрешность в пределах единицы последнего сохраняемого разряда, причём в положительной части числовой оси погрешность всегда отрицательна, а в отрицательной — положительна.
- Округление к большему (округление к +∞, округление вверх, англ. ceiling — досл. «потолок») — если обнуляемые знаки не равны нулю, предшествующий знак увеличивают на единицу, если число положительное, или сохраняют, если число отрицательное. В экономическом жаргоне — округление в пользу продавца, кредитора (лица, получающего деньги). В частности, 2,6 → 3, −2,6 → −2. Погрешность округления — в пределах +1 последнего сохраняемого разряда.
- Округление к меньшему (округление к −∞, округление вниз, англ. floor — досл. «пол») — если обнуляемые знаки не равны нулю, предшествующий знак сохраняют, если число положительное, или увеличивают на единицу, если число отрицательное. В экономическом жаргоне — округление в пользу покупателя, дебитора (лица, отдающего деньги). Здесь 2,6 → 2, −2,6 → −3. Погрешность округления — в пределах −1 последнего сохраняемого разряда.
- Округление к большему по модулю (округление к бесконечности, округление от нуля) — относительно редко используемая форма округления. Если обнуляемые знаки не равны нулю, предшествующий знак увеличивают на единицу. Погрешность округления составляет +1 последнего разряда для положительных и −1 последнего разряда для отрицательных чисел.
Различие округления в Python 2 и Python 3
В Python 2 и Python 3 реализованы разные принципы округления.
В Python 2 используется арифметическое округление. В нем наблюдается большое количество погрешностей, что приводит к неточностям в процессе вычислений.
Во втором Python есть только 4 цифры, которые ведут к преобразованию к меньшему значению – 1, 2, 3 и 4. Также 5 цифр, которые приводят к большему значению – 5, 6, 7, 8, 9. Такое неравное распределение ведет к тому, что погрешность постоянно нарастает.
Python 2 по правилам арифметического округления преобразует число 5,685 в 5,68 до второго знака. Такая погрешность связана с тем, что десятичные цифры float в двоичном коде невозможно корректно представить.
В Python 3 используются принципы банковского округления. Это означает, что преобразование производится к ближайшему четному. В таком случае также не удается полностью избежать возникающих ошибок, но программисты добиваются точности в подсчетах.
2,5 по правилам банковского преобразования будет равно 2, а 3,5 = 4 (значения возводятся к близкому четному). Минимизировать погрешности можно благодаря практически равной вероятности, что перед пятеркой будет четное или нечетное число.
Как проверить, активирована ли Windows 10?
Комментарии
Поведение этого метода соответствует стандарту IEEE 754, разделу 4.The behavior of this method follows IEEE Standard 754, section 4. Этот тип округления иногда называют округлением в сторону отрицательной бесконечности.This kind of rounding is sometimes called rounding toward negative infinity.
Floor(Double)
Возвращает наибольшее целое число, которое меньше или равно заданному числу с плавающей запятой двойной точности.Returns the largest integral value less than or equal to the specified double-precision floating-point number.
-
d
- Double
Число двойной точности с плавающей запятой.A double-precision floating-point number.
Возвращаемое значение
- Double
Наибольшее целое число, которое меньше или равно .The largest integral value less than or equal to . Если значение параметра равно NaN, NegativeInfinity или PositiveInfinity, возвращается это значение.If is equal to NaN, NegativeInfinity, or PositiveInfinity, that value is returned.
Примеры
В следующем примере показан метод и его отличие от метода.The following example illustrates the method and contrasts it with the method.
Комментарии
Поведение этого метода соответствует стандарту IEEE 754, разделу 4.The behavior of this method follows IEEE Standard 754, section 4. Этот тип округления иногда называют округлением в сторону отрицательной бесконечности.This kind of rounding is sometimes called rounding toward negative infinity. Иными словами, если является положительным, любой дробный компонент усекается.In other words, if is positive, any fractional component is truncated. Если имеет отрицательное значение, присутствие любого компонента дробной части приводит к округлению его до меньшего целого числа.If is negative, the presence of any fractional component causes it to be rounded to the smaller integer. Операция этого метода отличается от Ceiling метода, который поддерживает округление в сторону положительной бесконечности.The operation of this method differs from the Ceiling method, which supports rounding toward positive infinity.
Начиная с Visual Basic 15,8, производительность преобразования типа «двойное в целое число» оптимизирована, если передать значение, возвращаемое методом, в любую функцию целочисленного преобразованияили если значение Double, возвращаемое, автоматически преобразуется в целое число с параметром Option-on , равным OFF.Starting with Visual Basic 15.8, the performance of Double-to-integer conversion is optimized if you pass the value returned by the method to the any of the integral conversion functions, or if the Double value returned by is automatically converted to an integer with Option Strict set to Off. Эта оптимизация позволяет коду выполняться быстрее — до двух раз быстрее для кода, который выполняет большое количество преобразований в целочисленные типы.This optimization allows code to run faster — up to twice as fast for code that does a large number of conversions to integer types. В следующем примере показаны оптимизированные преобразования:The following example illustrates such optimized conversions:
АргументыArguments
numeric_expressionnumeric_expressionВыражение категории точного числового или приблизительного числового типа данных, за исключением типа данных bit.Is an expression of the exact numeric or approximate numeric data type category, except for the bit data type.
lengthlengthТочность, с которой должно быть округлено значение numeric_expression.Is the precision to which numeric_expression is to be rounded. Аргумент length должен быть выражением типа tinyint, smallint или int. Если аргумент length является положительным числом, значение numeric_expression округляется до числа десятичных разрядов, указанных в аргументе length.length must be an expression of type tinyint, smallint, or int. When length is a positive number, numeric_expression is rounded to the number of decimal positions specified by length. Если аргумент length является отрицательным числом, значение numeric_expression округляется слева от десятичной запятой, как указано в аргументе length.When length is a negative number, numeric_expression is rounded on the left side of the decimal point, as specified by length.
functionfunctionТип выполняемой операции.Is the type of operation to perform. Аргумент function должен иметь тип tinyint, smallint или int. Если аргумент function не указан или имеет значение 0 (по умолчанию), значение numeric_expression округляется.function must be tinyint, smallint, or int. When function is omitted or has a value of 0 (default), numeric_expression is rounded. Когда указывается значение, не равное 0, значение numeric_expression усекается.When a value other than 0 is specified, numeric_expression is truncated.