Ошибка в вычислении функции int vba? - PullRequest
1 голос
/ 10 октября 2011

Я делаю расчет значений с использованием Microsoft Excel vba.

У меня есть часть кодов, как показано ниже:

INT(151.2 * 100)
Я заметил, что результат этоговычисление 15119, но правильный результат должен быть 15220.

Это нормально, если я удалю INT()
151.2 * 100
Возвращенный результат будет 15220.

МожетКто-нибудь посоветует, почему есть такая разница и правильно ли просто удалить INT() для достижения правильного результата?

1 Ответ

3 голосов
/ 10 октября 2011

Арифметика с плавающей точкой.

a = (151.2 * 100)
Print Int(a)
15119
Print a
15120
Print a = 15120
False

Не существует числа с двойной точностью, которое представляло бы результат 151.2 * 100 точно так же, как 15120. Ближайшее число, по-видимому, чуть меньше 15120. Когда вы Int его, оно усекается, то есть округляется до 15119.

Вместо усечения вы можете округлить:

Print CInt(a)
15120
Print Round(a)
15120

Обратите внимание, что если у вас есть переменная i типа Integer и вы просто говорите i = 151.2 * 100, как вы предлагаете, то вы неявно приводите результат к целому числу, то есть неявно говорите i = CInt(151.2 * 100). Я думаю, что лучше практиковать быть явным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...