|
|
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
Есть такие? В старом компонетне олап подложили свинью и у бухов на виндовс хп x86 не идут копейки везде, где сумма около 100к (т.е. 7-8 знаков). На x64 всё работает нормально. Как собрать проект так, чтобы все флоаты были двойной точности по дефолту? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2020, 12:40 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
crutchmaster, Посмотреть в сторону Currency. Или вводить соответствующие правила округления, т.к. вещественные типы хранят ближайшее представление числа и есть шанс получить вместо целого (X).0 - иррациональное (X-1).(9). Касаемо отличий вещественных типов на платформах, то знаю только про extended который на x64 просто double. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2020, 14:04 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
1) Копейки могли и не пропасть, а просто не отображаются из-за длины числа, проверяйте настройки отображения типа ширины ячеек. 2) Проблемы могут быть из-за математики: x86 считает на "математическом сопроцессоре" (который со времен 486DX интегрирован в процессор, но особенности остались) считает с большей точностью, чем x64 на векторной встройке (но на буховских алгоритмах это вряд ли проявится). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2020, 18:09 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2020, 20:18 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
crutchmaster На x64 всё работает нормально. Как собрать проект так, чтобы все флоаты были двойной точности по дефолту? Никак. Ещё спроси, как сделать, чтобы все целые были одной разрядности, а то одни 8 бит, другие - 64. Используй Double везде, где нужно, и все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2020, 20:30 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
Для математического округления в delphi следует использовать модуль DecimalRounding_JH1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2020, 21:00 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
_Den_Z_ Посмотреть в сторону Currency Не могу, всё вшито в pivot cube (zcube.dll) еще в конце нулевых. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2020, 22:07 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
bk0010, 1) Настройки везде одинаковые, есть ошибки в сумме. 2) Там видимо дело даже не в сопроцессоре. Все похоже на то, что один и тот же бинарник работает то с Single, то с Double в зависимости от платформы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2020, 22:12 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
crutchmasterВсе похоже на то, что один и тот же бинарник работает то с Single, то с Double в зависимости от платформы. Как вы себе такое представляете? Если DLL скомпилирована под x86, то она и на 64-битной платформе будет работать в точности так же, как на x86. От разрядности платформы точность расчетов внутри DLL не зависит. Ищите причину в разнице настроек ОС или дайте больше информации. P.S. Вероятность того, что внутри DLL идет проверка версии ОС и в зависимости от нее меняется логика работы, считаю ничтожной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2020, 22:45 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
Было уже что-то похожее: https://www.sql.ru/forum/251174/sos-problema-s-okrugleniem ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2020, 22:50 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
misha mike Как вы себе такое представляете? Да никак. Есть факт, на хп появляются характерные ошибки округления. misha mike Если DLL скомпилирована под x86, то она и на 64-битной платформе будет работать в точности так же, как на x86. На x86 fpu и все double 80 бит, так что не в точности также, как минимум из-за этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 08:10 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
misha mike Ищите причину в разнице настроек ОС или дайте больше информации. На венде 10-ке такая же петрушка. Как в венде посмотреть какие либы линкует бинарник? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 08:15 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
crutchmaster, 22132405 , 22132474 - читать не умеете? дело обычно в каких ни будь косых драйверах или библиотеках, которые сбивают флаг точности расчётов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 08:33 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan), Нет. Невероятно, но это факт, дело в кривом pivotcube http://www.pivotcube.com/forum/viewtopic.php?f=8&t=354 Я хз как так можно написать, чтобы на разных системах получилась разная точность. Спецом не сделаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 10:19 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
crutchmaster, но про зависимость от ОС там ни слова. crutchmasterНа x86 fpu и все double 80 бит У 32-битных программ даже на 64-битной платформе fpu ровно такой же, как на чистом x86. Это для 64-битного кода fpu уже deprecated и вещественные числа обрабатываются в sse, а 32-битный бинарник, если он претендует на совместимость, будет использовать f-интрукции, которые выполняются модулем x87 точно так же, как и 30 лет назад. Не, были в эпоху всеобщих 32 бит программы (плеера, кодеки, игры), которые при наличии какого-нибудь mmx или 3dnow, начинали использовать его для ускорения работы. Но это, во-первых, был критичный ко времени исполнения код, а во-вторых, реализовано это обычно было как раз при помощи отдельных dll для обычного и "продвинутого" процессора. Ваша проблема, как уже написали, скорее всего в том, что в XP каким-то образом изменяется контекст сопроцессора. Этот контекст имеет глобальный характер и один драйвер может изменить его так, что все программы начнут работать по-другому. Это, кстати, одна из причин, почему от fpu отказываются, не предназначался он для многозадачного применения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 13:05 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
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 сохраняется для потока просто некоторые процедуры из косых либ его меняют, а назад не восстанавливают ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 17:33 |
|
||
|
Числа с плавающей точой, зависимые от платформы
|
|||
|---|---|---|---|
|
#18+
misha mike crutchmaster, но про зависимость от ОС там ни слова. Да это у нас две либы перепутали. В одной там single, но потом автор одумался и сделал double. Старая версия где-то осталась и за 10 лет все благополучно забыли что зачем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2020, 10:57 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39957139&tid=2038329]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
190ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 473ms |

| 0 / 0 |
