1. Метод округления - это очень широко используемый приблизительный метод расчета, который включает в себя два типа: метод округления арифметического округа и метод округления банкира. Так называемый метод округления арифметического округа-это метод округления в нашем обычном смысле. Правило: когда значение заброшенного бита больше или равна 5, бит снимается, когда бит отбирается; Так называемый метод округления банкира, по сути, является методом округления четырех округления шесть на пять и поддержания двойного (также известного как округление шесть на пять странных и даже). Правила: когда стоимость заброшенного бита меньше 5, бит отброшен непосредственно; Когда значение левого бита остается, когда равна 5, если значение предыдущей цифры нечетное, то бит отбрасывается, когда бит отбрасывается. напрямую. Подводя итог, результаты, полученные двумя методами округления, не являются согласованными, поэтому их необходимо различить в соответствии с фактическими потребностями при их использовании. В противном случае возникнут некоторые необъяснимые отклонения. 2. Функция округления в Delphi хорошо известна. Тем не менее, он реализует операции округления в соответствии с правилами метода округления банкира. Использование функции округления в Delphi всегда использовало раунд, но иногда я обнаруживал, что ответы, полученные с помощью его, будут отличаться от того, что мы ожидали. Например: I: = Round (11,5) Результат: i = 12i: = Round (10.5) Результат: i = 10 Да, согласно нашим ожиданиям, вторая функция должна вернуть 11, но почему это происходит? Для xxx.5 целочисленная часть представляет собой нечетное число, затем округление будет округлым. Это ошибка Delphi? Этот процессор использует так называемый метод округления банкира, то есть при реализации круглой функции по промежуточному значению (например, 5,5, 6.5), процессор определяет, основано ли округление на нечетном и даже характере до уровня до Десятичная точка, такая как 5,5 раунда результата, составляет 6, а результат 6,5 раунда также составляет 6, потому что 6 - равномерное число. Круглый функция на самом деле использует алгоритм банкира для операций, и, как правило, статистически используется для использования этого алгоритма, который является более научным, чем наш традиционный метод округления. Кто -то решил, добавив очень небольшое значение к 10.5, а затем вызывая круглую функцию. Корская причина. Другая функция была обнаружена в Интернете: функция Doround (значение: расширено): Int64; = Defall8087cw; Это значение управления контроллером плавающей запятой (FPU) в процессоре. Идея вышеупомянутой программы очень проста, которая состоит в том, чтобы сначала сохранить 8087CW, а затем установить ее на округление, так что, когда даже цифры не будут округлыми, и, наконец, восстановить 8087CW. Фактически, вышеупомянутая функция может быть упрощена OldCW: = DEFALT8087CW; одно решение. Фактически, Борланд давно думал, что мы столкнемся с такой проблемой, и думал, что нам нужно настроить режим округления FPU, поэтому он предоставил для нас готовые функции. В математическом блоке есть функция SetRoundMode. Ниже приведена функция округления: SetRoundMode (RM); ткань? Например: I: = Roundex (11,5, Rmtruncate) Результат: I = 11i: = Roundex (10.5, Rmtruncate) Результат: I = 10Roundex Функция была преобразована в функцию Trunc.