![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 18.01.2012
Сообщений: 9
|
![]()
Уважаемые программисты, прошу помощи в моей проблеме.
Есть программа написанная в Delphi, в ней есть алгоритм обработки массива типа Double. Массив достаточно большой, его длина в разных случаях может достигать нескольких миллионов значений. Сам алгорит ничего особого собой не представлят, обычные математические операции. Но при его работе на разных компьютерах получаются разные результаты. Что может влиять на его работу? |
![]() |
![]() |
![]() |
#2 | |
Форумчанин
Регистрация: 11.04.2012
Сообщений: 212
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 18.01.2012
Сообщений: 9
|
![]()
В таком случае на одном и том же компьютере я бы тоже получал разные результаты при каждой проработке алгоритма. Или я не прав?
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 11.04.2012
Сообщений: 212
|
![]()
Не прав.
На "одном и том же" не меняется главное - CPU/FPU. |
![]() |
![]() |
![]() |
#5 |
Регистрация: 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; |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
А чем это отличается от "простых" арифметических операций? В конечном счете к ним все и сводится
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 11.04.2012
Сообщений: 212
|
![]()
К чему это извращение с RoundFloat(), если есть стандартные RoundTo() и SimpleRoundTo() ?
http://www.delphi-box.ru/view_post.php?id=46 > Может она вести себя по разному на разных FPU? запросто. |
![]() |
![]() |
![]() |
#8 |
Регистрация: 18.01.2012
Сообщений: 9
|
![]() |
![]() |
![]() |
![]() |
#9 |
Регистрация: 18.01.2012
Сообщений: 9
|
![]()
Спасибо за помощь, пересмотрю весь код и уберу эту функцию. Потом проверю
|
![]() |
![]() |
![]() |
#10 |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
![]()
тут вот еще есть про укругления http://rouse.drkb.ru/other.php#round
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Разный результат в отладчике и при запуске *.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 |