Странный результат, когда отнимают 2 фигуры одинарной точности друг от друга в VBA
Может кто-нибудь объяснить мне, почему результат ниже не равен нулю?
? CSng("0.199881939681229")
? CSng(0.1998819)
? CSng(CSng(0.199881939681229) - CSng(0.1998819))
1-я строка возвращает 0,1998819 2-я строка также возвращает 0,1998819, а 3-я возвращает 4.470348E-08
Откуда берется эта цифра, если обе фигуры представлены в точности одинаковым значением в типе данных с одинарной точностью.
1 ответ
Решение
Кажется, что другой ответ для этого был удален, поэтому я отвечу сам.
VBA возвращает 0.1998819, но фактически не хранит оба числа в одном и том же двоичном файле.
см. http://www.binaryconvert.com/result_float.html?decimal=048046049057057056056049057051057054056049050050057 и http://www.binaryconvert.com/result_float.html?decimal=048046049057057056056049057
Почти идентичны, но нет.
тайна разгадана, VBA представление поплавков в ближайшем окне было проблемой.