![]() |
|
![]() ![]() ![]() |
|
S3_ |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 14.10.2007 Репутация: нет Всего: нет |
Доброго времени суток.
Есть такая задача, которая, как может показаться, может быть не простой. Есть вводимые числа, и есть числа определнного формата. Разница между ними только в том, что одни в 10, 100 раз больше (меньше) других. Нужно привести вводимые числа к нужному формату. Например: Есть числа (в идеале берется только одно число)
А вводимые числа могут быть такие (вводится три таких числа):
Нужно определить на сколько нужно умножить вторые числа (на 100, 10, 0.1 ... ), что бы они были максимально близки к первым. Есть идея умножать(делить) на 10 до тех пор, пока разница целых частей не станет <=1, но я не уверен в правильности такого подхода. В основном прошу совета хода решения, код написать смогу сам ![]() |
||||
|
|||||
Pavia |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 418 Регистрация: 6.12.2008 Репутация: 11 Всего: 12 |
Берёшь логарифм по основанию 10. От первых чи ел и от вторых.
Из первых вычитаешь вторые. Целый результат и будет степень. Если процессор логарифмы не умеет считать, то да через умножение и деление. |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 2 Всего: 85 |
А например число 3.3333
надо интерпретировать, как 3.3333, или как 0.3333 ? ![]() |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
Если это просто тренировочная задача, то проще всего, как описал Pavia, через десятичные логарифмы.
Но если задача имеет променение, то стОит обсудить ее практический смысл. Оценка никогда не будет 100% достоверной (см., например, вопрос volatile). Минимизировать же ошибки, наверое, можно, если понимать смысл задачи. -------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
S3_ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 14.10.2007 Репутация: нет Всего: нет |
Задача имеет практическое применение.
Надо было сразу наверное написать ![]() Например текущая рынковая цена 1.05. Босс говорит купить только по цене 99.5 (присылает цену в другом формате или таком же), тоесть пока цена не упадет до 0.995. Задача заключается в преобразовании второй цены. |
|||
|
||||
_Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 8 Всего: 34 |
S3_, из примера получается, что икомое значение (0.995) отличается от "опорного" (1.05) не в разы. В этом случае логарифмический подход будет работать без проблем. Ошибки будут начинаться при разнице где-то в 3 раза и больше (0.5 по логарифмической шкале).
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
S3_ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 14.10.2007 Репутация: нет Всего: нет |
Действительно, хорошее решение. Спасибо за помощь!
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |