Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 20.02.2011
Сообщений: 6
1

Сопроцессор. Округление до нужного знака

20.02.2011, 20:27. Показов 6532. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Необходимо округлить число до нужного знака в сопроцессоре(в данном случае до 4-го):
Assembler
1
2
3
4
5
6
7
8
9
10
...
fx    dd 3.456753
tmp dw ?
...
finit
fld fx
 
frndint; это округление до целого
fstp fx
...
как изменить точность?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.02.2011, 20:27
Ответы с готовыми решениями:

Округление до нужного разряда
Здравствуйте. Экспортирую из БД файл в Excel. Но в самой БД вместо точек используются запятые....

Округление double до 9 знака
Здравствуйте, форумчане. Появилась проблема при округлении результата при выполнении математической...

Округление и отображение нужного количества знаков после запятой
Здравствуйте, уважаемые форумчане! Такой вопрос. Есть информационная система(сурбд мсскл...

Округление, 2 знака после запятой
Привет всем. Помогите сделать округление на 2 цифры после запятой. В общем, нашел в сети вариант...

6
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
20.02.2011, 21:18 2
Умножить на 10000, округлить до целого, разделить на 10000.
0
0 / 0 / 0
Регистрация: 20.02.2011
Сообщений: 6
20.02.2011, 21:23  [ТС] 3
Этот вариант не очень удобен в моем случае, т.к. мне очень много раз придется это делать.
Можно как-то изменить точность округления с помощью команды fnstcw, но я не знаю как. Это и хотелось бы услышать. Если кто знает, подскажите пожалуйста, а то вся работа стоит из-за этого(
0
639 / 482 / 12
Регистрация: 10.01.2011
Сообщений: 1,045
20.02.2011, 21:27 4
Цитата из книги Зубкова:

Регистр управления CR:

Биты 11 – 10 «RC» — управление округлением.

Биты RC определяют способ округления результатов команд FPU до заданной точности (табл. 10).


Значение RC Способ округления
0 к ближайшему числу
1 к отрицательной бесконечности
2 к положительной бесконечности
3 к нулю

Команда:
FSTCW приемник
Назначение:
Сохранить регистр CR
8087

Команды копируют содержимое CR в приемник (16-битная переменяя). Команда FSTCW, в отличие от FNSTCW, проверяет наличие произошедших и необработанных исключений и обрабатывает их до выполнения. Команда FSTCW полностью эквивалентна (и на самом деле является) WAIT FNSTCW.

Команда:
FLDCW источник
Назначение:
Загрузить регистр CR
Процессор:
8087

Копирует содержимое источника (16-битная переменная) в регистр CR. Если один или несколько флагов исключений установлены в регистре SR и замаскированы в CR, а команда FLDCW эти маски удалила, исключения будут обработаны перед началом выполнения следующей команды FPU (кроме команд без ожидания). Чтобы этого не происходило, обычно перед FLDCW выполняют команду FCLEX.
1
0 / 0 / 0
Регистрация: 20.02.2011
Сообщений: 6
20.02.2011, 22:08  [ТС] 5
Я так понял необходимо использовать маску. Выглядеть думаю будет так:
Assembler
1
2
3
fnstcw  tmp  ; сохраняем значение CR
or      tmp,mask  ; изменяем его
fldcw   tmp  ; восстанавливаем
но каково должно быть значение mask?
0
Ушел с форума
Автор FAQ
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
21.02.2011, 03:47 6
Efreeee, перед установкой способа округления необходимо предварительно очистить 11-ый и 10-ый биты CR, поэтому где-то так
Assembler
1
2
3
4
5
6
7
8
.data
mask1 dw 1111001111111111b
mask2 dw 0000XX0000000000b; где ХХ это нужная нам комбинация: 00 или 01 или 10 или 11
.code
fnstcw  tmp  ; сохраняем значение CR
and  tmp,mask1; очищаем 10 и 11 биты
or tmp,mask2  ; устанавливаем нужный режим
fldcw tmp  ; восстанавливаем
В случае с 00b достаточно and tmp,mask1 в случае с 11b достаточно or tmp,mask2
1
4165 / 1817 / 216
Регистрация: 06.10.2010
Сообщений: 4,074
21.02.2011, 16:29 7
Efreeee
умножь на 10000, округли, умножь на 0.0001
0
21.02.2011, 16:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2011, 16:29
Помогаю со студенческими работами здесь

Округление до 25-го знака после запятой
Граждане, помогите с округлением до 25-го знака после запятой в Питоне, пожалуйста) Вот сама...

Округление вещественного результата до нужного количества точек после запятой
В языке Python при суммировании двух рациональных чисел выходит результат 2.8746520987465. Как...

Округление числа . FF.1F9A6B51 (16) до определенного знака
Есть дробное число допустим 255,12345 перевести его в 16 систему это будет FF.1F9A6B51 .. и ...

Округление до n знака. Цвет кусочка текста.
Возник вот такой вопрос.. Есть программа: #include <iostream> #include <conio.h> using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru