![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.04.2015
Сообщений: 30
|
![]()
Привет!
Вообщем Delphi пропарсил строку и сделал мне double. И я беру ту же строку и получаю double. Способ мой коротко вот: Код:
![]() Как урегулировать, чтобы мои флоатки были таки эквивалентны делфийским? Есть какой-то регистр msxcr, но он каждый раз меняется после любой операции.... |
![]() |
![]() |
![]() |
#2 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]()
че-то не понял. ты сделал копипаст кода из какой-то библиотеки (делфи) и копипаст дает результат отличный от оригинала?
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.04.2015
Сообщений: 30
|
![]()
Не, это мой код. И результат не совпадает(сравнивая с делфи)
|
![]() |
![]() |
![]() |
#4 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]()
не совпадает на 1 бит? для длинных чисел так, что у дабла емкости не хватает, чтобы хранить мантиссу во всех подробностях и приходится округлять?
я бы не назвал это отличием. ну, если хочешь можешь перед счетом добавить что-то типа Код:
Последний раз редактировалось f.hump; 14.02.2016 в 13:49. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 15.04.2015
Сообщений: 30
|
![]()
f.hump, повлияло, но вообще катастрофа мой код.
Допустим "-5.722234971514055711914e+200" Delphi: 0E99DE70F044FBE0C (не знаю сколько он цифр у себя максимально обрабатывает, вроде 18 т.е. все до красных) Мой: 0E99DE70F044FBE08 (если также макс 18 цифр) Мой: 0E99DE70F044FBE06 (если макс 36 цифр т.е. красные тоже будет считать) И это с ldmxcsr or $06000 ок дойду до этого регистра уан дэй |
![]() |
![]() |
![]() |
#6 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]()
мои мысли были про то, что возможно метод округления повлиял на результат.
биты 13 и 14 MXCSR определяют метод округления 00 - до ближайшейго 01 - до меньшего 10 - до большего 11 - до меньшего по абсолютному значению но, с другой стороны метод округления - глобальный параметр, и повлияет на все процедуры использующие SSE. также разница может быть в том случае если методы Delphi испльзуют FPU, а не SSE Последний раз редактировалось f.hump; 14.02.2016 в 16:18. |
![]() |
![]() |
![]() |
#7 | |
Пользователь
Регистрация: 15.04.2015
Сообщений: 30
|
![]() Цитата:
Код:
![]() |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Строка в Float - как за время в 7 раз большее, чем просто пустой цикл | Мордохвост | Помощь студентам | 3 | 03.08.2015 11:42 |
Конвертация single float в double float | kypck | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 10 | 23.04.2012 00:22 |
Определение четности/нечетности | Assemblerman | Помощь студентам | 11 | 25.08.2011 21:49 |
Ошибка типа cannot convert `float*' to `float' for argument `1' ... | Trackman | Помощь студентам | 3 | 23.05.2011 17:09 |
FLOAT TO TRING И STRING TO FLOAT!! | MelKiY_bad | C++ Builder | 6 | 07.05.2010 14:31 |