Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2012, 13:56   #1
Dimansv
 
Регистрация: 18.01.2012
Сообщений: 9
По умолчанию Результат обработки массива разный на всех компьютерах

Уважаемые программисты, прошу помощи в моей проблеме.
Есть программа написанная в Delphi, в ней есть алгоритм обработки массива типа Double. Массив достаточно большой, его длина в разных случаях может достигать нескольких миллионов значений. Сам алгорит ничего особого собой не представлят, обычные математические операции. Но при его работе на разных компьютерах получаются разные результаты.
Что может влиять на его работу?
Dimansv вне форума Ответить с цитированием
Старый 23.10.2012, 14:04   #2
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
Что может влиять на его работу?
Например, ошибки в нем, связанные с игнорированием факта ограниченной точности представления чисел с плавающей запятой.
xoodoo вне форума Ответить с цитированием
Старый 23.10.2012, 14:13   #3
Dimansv
 
Регистрация: 18.01.2012
Сообщений: 9
По умолчанию

В таком случае на одном и том же компьютере я бы тоже получал разные результаты при каждой проработке алгоритма. Или я не прав?
Dimansv вне форума Ответить с цитированием
Старый 23.10.2012, 14:19   #4
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Не прав.
На "одном и том же" не меняется главное - CPU/FPU.
xoodoo вне форума Ответить с цитированием
Старый 23.10.2012, 14:44   #5
Dimansv
 
Регистрация: 18.01.2012
Сообщений: 9
По умолчанию

Кроме простых математических операций там есть сравнение чисел до пятого знака после запятой. Для округления использовал функцию округления до заданной точности. Может она вести себя по разному на разных FPU?

function RoundFloat(DV: Extended; Decimals: Integer): Extended;
var
Factor: Extended;
begin
Factor := Int(Exp(Decimals * Ln(10)));
Result := Round(Factor * DV) / Factor;
end;
Dimansv вне форума Ответить с цитированием
Старый 23.10.2012, 14:49   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А чем это отличается от "простых" арифметических операций? В конечном счете к ним все и сводится
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.10.2012, 14:55   #7
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

К чему это извращение с RoundFloat(), если есть стандартные RoundTo() и SimpleRoundTo() ?

http://www.delphi-box.ru/view_post.php?id=46

> Может она вести себя по разному на разных FPU?

запросто.
xoodoo вне форума Ответить с цитированием
Старый 23.10.2012, 14:56   #8
Dimansv
 
Регистрация: 18.01.2012
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А чем это отличается от "простых" арифметических операций? В конечном счете к ним все и сводится
Ничем не отличается и от этого становится только интереснее...
Dimansv вне форума Ответить с цитированием
Старый 23.10.2012, 15:03   #9
Dimansv
 
Регистрация: 18.01.2012
Сообщений: 9
По умолчанию

Спасибо за помощь, пересмотрю весь код и уберу эту функцию. Потом проверю
Dimansv вне форума Ответить с цитированием
Старый 23.10.2012, 15:14   #10
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

тут вот еще есть про укругления http://rouse.drkb.ru/other.php#round
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разный результат в отладчике и при запуске *.exe pinkiller Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 02.05.2012 16:34
find_first_not_of выдает разный результат Torymo Помощь студентам 2 04.01.2012 09:14
разный результат Кристина133 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 13.05.2011 19:15
Не на всех компьютерах видит приложение Shevali БД в Delphi 0 08.05.2010 20:58
Как результат обработки одного массива загнать в другой массив? delphifan PHP 1 16.04.2010 16:13