1,15 - 1,13 = 0,01999998 или 0,02? - PullRequest
0 голосов
/ 30 июля 2011

У меня есть следующий код в двух разных проектах на одном компьютере:

Dim MySingle1 As Single = 1.15
Dim MySingle2 As Single = 1.13
Dim MyResult As Single = MySingle1 - MySingle2

Но самое интересное то, что в одном проекте MyResult равен 0,02, а в другом проекте MyResult равен 0,01999998.

Я не смог решить это. Пожалуйста, предложите мне предложения.

Заранее благодарю.

С уважением SKPaul ​​

Ответы [ 2 ]

3 голосов
/ 30 июля 2011

Что должен знать каждый компьютерный ученый об арифметике с плавающей запятой

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

0 голосов
/ 30 июля 2011

Плавающая точка использует внутренне представление base-2. Для одинарной точности это 24 бита, что примерно эквивалентно ~ (6,7) десятичным цифрам точности, что вы и получаете (ваша седьмая цифра неточна).

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