0 / 0 / 0
Регистрация: 20.02.2011
Сообщений: 6
|
||||||
1 | ||||||
Сопроцессор. Округление до нужного знака20.02.2011, 20:27. Показов 6532. Ответов 6
Метки нет (Все метки)
Необходимо округлить число до нужного знака в сопроцессоре(в данном случае до 4-го):
0
|
20.02.2011, 20:27 | |
Ответы с готовыми решениями:
6
Округление до нужного разряда Округление double до 9 знака Округление и отображение нужного количества знаков после запятой Округление, 2 знака после запятой |
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 | |||||
Я так понял необходимо использовать маску. Выглядеть думаю будет так:
0
|
Ушел с форума
16279 / 7604 / 1065
Регистрация: 11.11.2010
Сообщений: 13,617
|
||||||
21.02.2011, 03:47 | 6 | |||||
Efreeee, перед установкой способа округления необходимо предварительно очистить 11-ый и 10-ый биты CR, поэтому где-то так
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 | |
21.02.2011, 16:29 | |
Помогаю со студенческими работами здесь
7
Округление до 25-го знака после запятой Округление вещественного результата до нужного количества точек после запятой Округление числа . FF.1F9A6B51 (16) до определенного знака Округление до n знака. Цвет кусочка текста. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |