powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Числа с плавающей точой, зависимые от платформы
17 сообщений из 17, страница 1 из 1
Числа с плавающей точой, зависимые от платформы
    #39956763
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такие? В старом компонетне олап подложили свинью и у бухов на виндовс хп x86 не идут копейки везде, где сумма около 100к (т.е. 7-8 знаков). На x64 всё работает нормально. Как собрать проект так, чтобы все флоаты были двойной точности по дефолту?
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39956841
_Den_Z_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster,
Посмотреть в сторону Currency. Или вводить соответствующие правила округления, т.к. вещественные типы хранят ближайшее представление числа и есть шанс получить вместо целого (X).0 - иррациональное (X-1).(9). Касаемо отличий вещественных типов на платформах, то знаю только про extended который на x64 просто double.
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957038
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Копейки могли и не пропасть, а просто не отображаются из-за длины числа, проверяйте настройки отображения типа ширины ячеек.
2) Проблемы могут быть из-за математики: x86 считает на "математическом сопроцессоре" (который со времен 486DX интегрирован в процессор, но особенности остались) считает с большей точностью, чем x64 на векторной встройке (но на буховских алгоритмах это вряд ли проявится).
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957112
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

если можете локализовать код расчётов, то сами выставляйте точность - классика вечна
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957114
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster
На x64 всё работает нормально. Как собрать проект так, чтобы все флоаты были двойной точности по дефолту?

Никак. Ещё спроси, как сделать, чтобы все целые были одной разрядности, а то одни 8 бит, другие - 64.

Используй Double везде, где нужно, и все.
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957125
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для математического округления в delphi следует использовать модуль DecimalRounding_JH1
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957139
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Den_Z_
Посмотреть в сторону Currency

Не могу, всё вшито в pivot cube (zcube.dll) еще в конце нулевых.
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957140
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bk0010,

1) Настройки везде одинаковые, есть ошибки в сумме.
2) Там видимо дело даже не в сопроцессоре. Все похоже на то, что один и тот же бинарник работает то с Single, то с Double в зависимости от платформы.
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957151
misha mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmasterВсе похоже на то, что один и тот же бинарник работает то с Single, то с Double в зависимости от платформы.
Как вы себе такое представляете? Если DLL скомпилирована под x86, то она и на 64-битной платформе будет работать в точности так же, как на x86. От разрядности платформы точность расчетов внутри DLL не зависит. Ищите причину в разнице настроек ОС или дайте больше информации.

P.S. Вероятность того, что внутри DLL идет проверка версии ОС и в зависимости от нее меняется логика работы, считаю ничтожной.
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957152
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Было уже что-то похожее:
https://www.sql.ru/forum/251174/sos-problema-s-okrugleniem
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957229
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mike
Как вы себе такое представляете?

Да никак. Есть факт, на хп появляются характерные ошибки округления.
misha mike
Если DLL скомпилирована под x86, то она и на 64-битной платформе будет работать в точности так же, как на x86.

На x86 fpu и все double 80 бит, так что не в точности также, как минимум из-за этого.
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957231
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mike
Ищите причину в разнице настроек ОС или дайте больше информации.

На венде 10-ке такая же петрушка. Как в венде посмотреть какие либы линкует бинарник?
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957238
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

22132405 , 22132474 - читать не умеете?
дело обычно в каких ни будь косых драйверах или библиотеках, которые сбивают флаг точности расчётов
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957269
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

Нет. Невероятно, но это факт, дело в кривом pivotcube

http://www.pivotcube.com/forum/viewtopic.php?f=8&t=354

Я хз как так можно написать, чтобы на разных системах получилась разная точность. Спецом не сделаешь.
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957375
misha mike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster, но про зависимость от ОС там ни слова.

crutchmasterНа x86 fpu и все double 80 бит
У 32-битных программ даже на 64-битной платформе fpu ровно такой же, как на чистом x86. Это для 64-битного кода fpu уже deprecated и вещественные числа обрабатываются в sse, а 32-битный бинарник, если он претендует на совместимость, будет использовать f-интрукции, которые выполняются модулем x87 точно так же, как и 30 лет назад.

Не, были в эпоху всеобщих 32 бит программы (плеера, кодеки, игры), которые при наличии какого-нибудь mmx или 3dnow, начинали использовать его для ускорения работы. Но это, во-первых, был критичный ко времени исполнения код, а во-вторых, реализовано это обычно было как раз при помощи отдельных dll для обычного и "продвинутого" процессора.

Ваша проблема, как уже написали, скорее всего в том, что в XP каким-то образом изменяется контекст сопроцессора. Этот контекст имеет глобальный характер и один драйвер может изменить его так, что все программы начнут работать по-другому. Это, кстати, одна из причин, почему от fpu отказываются, не предназначался он для многозадачного применения.
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957614
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mike
crutchmaster, но про зависимость от ОС там ни слова.

crutchmasterНа x86 fpu и все double 80 бит

У 32-битных программ даже на 64-битной платформе fpu ровно такой же, как на чистом x86. Это для 64-битного кода fpu уже deprecated и вещественные числа обрабатываются в sse, а 32-битный бинарник, если он претендует на совместимость, будет использовать f-интрукции, которые выполняются модулем x87 точно так же, как и 30 лет назад.

Не, были в эпоху всеобщих 32 бит программы (плеера, кодеки, игры), которые при наличии какого-нибудь mmx или 3dnow, начинали использовать его для ускорения работы. Но это, во-первых, был критичный ко времени исполнения код, а во-вторых, реализовано это обычно было как раз при помощи отдельных dll для обычного и "продвинутого" процессора.

Ваша проблема, как уже написали, скорее всего в том, что в XP каким-то образом изменяется контекст сопроцессора. Этот контекст имеет глобальный характер и один драйвер может изменить его так, что все программы начнут работать по-другому. Это, кстати, одна из причин, почему от fpu отказываются, не предназначался он для многозадачного применения.состояние fpu сохраняется для потока
просто некоторые процедуры из косых либ его меняют, а назад не восстанавливают
...
Рейтинг: 0 / 0
Числа с плавающей точой, зависимые от платформы
    #39957895
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
misha mike
crutchmaster, но про зависимость от ОС там ни слова.

Да это у нас две либы перепутали. В одной там single, но потом автор одумался и сделал double. Старая версия где-то осталась и за 10 лет все благополучно забыли что зачем.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Числа с плавающей точой, зависимые от платформы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]