Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
ВнизПочему срабатывает условие Найти похожие ветки
← →
NaZGHUL (2003-06-10 11:43) [0]Ребята помогите:
...
var a,b:real;
i:integer;
...
for i:=1 to ... do
if A[i] > B then ...;
...
У меня почему то срабатывает условие при A=B, если А и В - дробное число, причем если А и В целые числа и А=В не срабатывает что делать...............Help!!!
← →
Palladin (2003-06-10 11:46) [1]замени real на currency и не мучайся
← →
NaZGHUL (2003-06-10 11:55) [2]Все конечно гораздо сложнее - это сильно оочень сильно упрощенная модель, переделывать весь код влом - дело принципа: почему такая фигня происходит!!!!! Я пишу экспертную систему для машиностроения и дороги любые 0,001 мм. Прикольно другое условие срабатывает если 10,94 > 10,939999999999999!!!!
← →
Sandman25 (2003-06-10 11:59) [3]Переведите все в условные единицы измерения. То есть 1ед. = 0.001мм
← →
NaZGHUL (2003-06-10 12:18) [4]Ну поему такая фигня происходит то!!!!!???????????? 8-(
← →
Катерина (2003-06-10 12:22) [5]
const eps = 0.001;
...
if abs(a-b) < eps then
... // A = B
else if a > b then
... // A > B
else
... // A < B
← →
Катерина (2003-06-10 12:38) [6]Для значений вещественных типов (кроме Comp, Currency), т.е. имеющих дробную часть нефиксированной длины, A = B практически никогда не будет истинным, поскольку таким образом (real и т.д.)определяются числа с некоторой точностью. И соответственно сравнение этих чисел надобно производить с необходимой точностью.
← →
icWasya (2003-06-10 13:03) [7]из справки
Type Range Significant digits Size in bytes
Real48 2.9 x 10^–39 .. 1.7 x 10^38 11–12 6
Single 1.5 x 10^–45 .. 3.4 x 10^38 7–8 4
Double 5.0 x 10^–324 .. 1.7 x 10^308 15–16 8
Extended 3.6 x 10^–4951 .. 1.1 x 10^4932 19–20 10
Comp –2^63+1 .. 2^63 –1 19–20 8
Currency –922337203685477.5808.. 922337203685477.5807 19–20 8
The generic type Real, in its current implementation, is equivalent to Double.
разница между 10,94 и 10,939999999999999 ~ 1e-15 , что на пределе точности
← →
Юрий Зотов (2003-06-10 13:21) [8]> NaZGHUL
Правильные и подробные ответы на все вопросы Вы найдете здесь:
http://www.delphikingdom.ru/helloworld/reals.htm
← →
NaZGHUL (2003-06-10 13:22) [9]Сенки всем!!! :)))
← →
Song (2003-06-10 15:17) [10]IF FloatToStr(A)=FloatToStr(B) then...
:)
← →
АСВГ (2003-06-10 16:19) [11]Народ а как насчет переопределения оператора равно и сравнение через него?
Ну это если нужна определенная точность.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c