2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3, 4, 5, 6
 
 Re: IEEE754
Сообщение25.09.2020, 16:30 
IvanX, начиная с C99 и C++11 это можно настроить описанными в стандарте способами.

 
 
 
 Re: IEEE754
Сообщение25.09.2020, 18:14 
Не имел ввиду принудительное округление. Давайте рассмотрим конкретный пример. Складываем два числа x=1 и y=1+2^(-23) типа float. Сумма x+y не может быть представлена типом float, лежит посередине между 2 и 2+2^(-22). Эксперимент в Visual Studio на C++ показал, что произошло округление суммы до 2. Это был какой режим? Так будет везде и всегда? Как из программы можно изменить режим округления?

 
 
 
 Re: IEEE754
Сообщение25.09.2020, 18:39 
Это было округление к чётному.
Что вам мешает написать программу которая запустив четыре (если я не обсчитался) примера установит какой режим используется?

 
 
 
 Re: IEEE754
Сообщение25.09.2020, 19:00 
Кажется, начал понимать. Пусть x=1+2^(-22) и y=1+2^(-23). Сумма лежит посередине между 2+2^(-22) и 2+2^(-21). Эксперимент показывает, что сумма округляется до 2+2^(-21). Потому в этом случае в мантиссе младший бит 0.

 
 
 
 Re: IEEE754
Сообщение25.09.2020, 19:19 
IvanX в сообщении #1484597 писал(а):
Visual Studio... Как из программы можно изменить режим округления?
Попробуйте в хелпе поискать _control87. (Visual Studio/Run-Time Library Reference/Alphabetical Function Reference/_control87, _controlfp, __control87_2)
(На практике я всегда писал изменение CW на асме. Как-то обычно и в голову не приходит использовать функции ЯВУ для этого.)

 
 
 [ Сообщений: 80 ]  На страницу Пред.  1, 2, 3, 4, 5, 6


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group