Здравствуйте.
Используется TestComplete 8.10 Demo, JScript
Подскажите, пожалуйста, это есть баг или я что-то не правильно делаю?
Код:
Log.Message(250 - 255.55);
Результат:
Type Message Time Priority Has Picture Link
-5,55000000000001 16:46:49 Normal
На самом деле все эти числа содержаться в переменных, они кучу раз переводятся из одного типа в другой, потом что-то берется по модулю и т.п. но это не важно, ибо косяк виден уже на таком примере. При дальнейшей работе эта лишняя единичка очень портит жизнь. Никто с таким не сталкивался? На сколько я понял проявляется такое только если сотая часть числа равна 5, и то не всегда.
Некорректное сложение чисел
Автор kazachis4e, 14 фев 2011 13:49
Сообщений в теме: 3
#1
Отправлено 14 февраля 2011 - 13:49
#3
Отправлено 14 февраля 2011 - 16:00
Строка
Если смотреть через Evaluate значение s:
А вот
Но почему aqConvert.FloatToStr и форматное преобразование "g" не равны, это хороший вопрос !!
Log.Message(aqString.Format("%g",250 - 255.55))даст в Message то, что Вам нужно, т.е. -5,55
Если смотреть через Evaluate значение s:
s = 250 - 255.55, то оно равно -5,55.
А вот
s2 = aqConvert.FloatToStr(250 - 255.55)дает s2 = -5,55000000000001
Но почему aqConvert.FloatToStr и форматное преобразование "g" не равны, это хороший вопрос !!
#4
Отправлено 15 февраля 2011 - 07:23
Этой проблеме сто лет в обед. Решение описано еще вот в этой древней, как восьмидюймовые дискеты книге: http://www.libex.ru/...ook109519.html.
Кстати, книгу вполне можно почитать и сейчас.
Кстати, книгу вполне можно почитать и сейчас.
--
Сергей Мартыненко
Блог 255 ступеней (байки для оруженосца)
facebook (Дети диаграммы Ганта)
ВебПосиделки клуба имени Френсиса Бэкона
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных