2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Округление вещественного числа, деление без остатка
Сообщение30.08.2011, 14:32 
Заслуженный участник


11/05/08
32166
worm2 в сообщении #478946 писал(а):
Наиболее правильное решение задачи 1 — использование десятичной арифметики.

Т.е. арифметики с фиксированной точкой. Угу. И как мы с помощью этой арифметики будем писать процедуру, скажем, округления числа $\sqrt2$ до нужного количества знаков?...

Вообще-то вопрос об округлениях довольно неоднозначен. Например, вполне практическая задача: найти решение (рациональное) системы линейных уравнений с целыми коэффициентами. Есть два напрашивающихся варианта:

1. Реализовать рациональную арифметику.
2. Считать всё в вещественных числах и потом округлять результаты цепными дробями.

Второе -- технически проще.

 Профиль  
                  
 
 Re: Округление вещественного числа, деление без остатка
Сообщение30.08.2011, 15:02 


30/12/09
95
worm2 в сообщении #478946 писал(а):
В некоторых банковских приложениях так делают, чтобы обеспечить нормативные правила округления.

Именно так. В финансовых приложения весьма распространен формат когда цена кодируется целым числом и вторым числом, обозначающим позицию десятичной точки.

 Профиль  
                  
 
 Re: Округление вещественного числа, деление без остатка
Сообщение30.08.2011, 19:20 
Заслуженный участник
Аватара пользователя


01/08/06
3131
Уфа
ewert писал(а):
Т.е. арифметики с фиксированной точкой. Угу. И как мы с помощью этой арифметики будем писать процедуру, скажем, округления числа $\sqrt2$ до нужного количества знаков?...
Не обязательно с фиксированной. Можно и с плавающей организовать, и с мантиссой переменной длины. Главное — в десятичной системе считать. А алгоритмы те же, что и для обычной, двоичной арифметики.

Правда, для математических или физических задач проще и быстрее производить вычисления в двоичном виде, а потом приводить к десятичному. Но как быть, когда нам предписывают производить вычисления в строго определённом порядке: это умножить на это, округлить до такого-то числа знаков, разделить на то, опять округлить, возвести в двенадцатую степень и снова округлить?.. Тут выгоднее тупо имитировать процесс вычислений на бумажке "столбиком".

 Профиль  
                  
 
 Re: Округление вещественного числа, деление без остатка
Сообщение30.08.2011, 21:31 
Заслуженный участник


11/05/08
32166

(Оффтоп)

worm2 в сообщении #479033 писал(а):
Тут выгоднее тупо имитировать процесс вычислений на бумажке "столбиком".

Я ровно так и делал, когда уже довольно много лет назад (не помню точно, сколько) писал программу, которая решает линейные неоднородные дифференциальные уравнения со стандартной правой частью и с целыми коэффициентами методом неопределённых коэффициентов. Причём решая именно тупо: формально дифференцируя предполагаемое частное решение, формально всё складывая и потом решая получившуюся СЛАУ. Выводя при этом исходное условие, ключевые моменты решения и ответ в ТеХ-овский файл.

Тупизна диктовалась вовсе не спортивным интересом, а сугубо практическими соображениями: это нужно было для генерации индивидуальных домашних заданий (и потом комфортной проверки решений).

Так вот: по некоторому размышлению я пришёл к выводу, что проще всего решать ту систему именно в вещественных числах. Тем более, что проблемы с остановом цепных дробей там не возникало в принципе: если знаменатели оказывались больше сотни, то такой вариант отбраковывался автоматически. Просто потому, что задания-то предназначались для ручного счёта, а заставлять детишек возиться с тысячными или тем более многомиллионными знаменателями -- как минимум невежливо.

 Профиль  
                  
 
 Re: Округление вещественного числа, деление без остатка
Сообщение22.09.2011, 22:04 


17/05/11
158
usr00210 в сообщении #477843 писал(а):
Подскажите пожалуйста алгоритмы:

1. Округление (правильное) произвольного вещественного числа до заданной точности/разряда.
2. Проверка произвольного вещественного числа на кратность любому другому вещественному числу.

Спасибо!


1. а) гугл
б) преобразовываешь в строку, делаешь поиск до запятой, делаешь проверку какую-нить на число до и после запятой, потом делаешь что тебе надо и печатаешь новое число потом опять преобразование в вещественный тип и вуаля

2.4324234 = 2 или 2,4 ты хочешь?

2. посмотри как работает оператор % в с++

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group