Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Приведение числа к заданному виду, Приведение чисел к опр. виду 
:(
    Опции темы
S3_
  Дата 19.1.2012, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 14.10.2007

Репутация: нет
Всего: нет



Доброго времени суток.
Есть такая задача, которая, как может показаться, может быть не простой.
Есть вводимые числа, и есть числа определнного формата. Разница между ними только в том, что одни в 10, 100 раз больше (меньше) других. Нужно привести вводимые числа к нужному формату.

Например:
Есть числа (в идеале берется только одно число)
Код

...
0,99
0.98
0.95
0.97
1.01
1.03
...


А вводимые числа могут быть такие (вводится три таких числа):
Код


99.5
98.4
95.0
100.5
105.6


Нужно определить на сколько нужно умножить вторые числа (на 100, 10, 0.1 ... ), что бы они были максимально близки к первым.

Есть идея умножать(делить) на 10 до тех пор, пока разница целых частей не станет <=1, но я не уверен в правильности такого подхода.

В основном прошу совета хода решения, код написать смогу сам  smile 
PM MAIL   Вверх
Pavia
Дата 19.1.2012, 19:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 418
Регистрация: 6.12.2008

Репутация: 11
Всего: 12



Берёшь логарифм по основанию 10. От первых чи ел и от вторых.
Из первых вычитаешь вторые. Целый результат и будет степень.
Если процессор логарифмы не умеет считать, то да через умножение и деление.
PM MAIL   Вверх
volatile
Дата 19.1.2012, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 2
Всего: 85



А например число 3.3333
надо интерпретировать, как 3.3333, или как 0.3333 ?  smile 


PM MAIL   Вверх
_Y_
Дата 20.1.2012, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Если это просто тренировочная задача, то проще всего, как описал Pavia, через десятичные логарифмы.

Но если задача имеет променение, то стОит обсудить ее практический смысл. Оценка никогда не будет 100% достоверной (см., например, вопрос volatile). Минимизировать же ошибки, наверое, можно, если понимать смысл задачи.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
S3_
  Дата 20.1.2012, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 14.10.2007

Репутация: нет
Всего: нет



Задача имеет практическое применение.
Надо было сразу наверное написать  smile  Первое число, с которым сравнивать нужно, это рынковая цена. Второе число может быть любым(цена покупки/продажи), но известно что как минимум в 1, 10, 100 вторые чила больше/меньше рынковой.
Например текущая рынковая цена 1.05. Босс говорит купить только по цене 99.5 (присылает цену в другом формате или таком же), тоесть пока цена не упадет до 0.995. Задача заключается в преобразовании второй цены.

PM MAIL   Вверх
_Y_
Дата 20.1.2012, 13:12 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



S3_, из примера получается, что икомое значение (0.995) отличается от "опорного" (1.05) не в разы. В этом случае логарифмический подход будет работать без проблем. Ошибки будут начинаться при разнице где-то в 3 раза и больше (0.5 по логарифмической шкале).


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
S3_
Дата 20.1.2012, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 37
Регистрация: 14.10.2007

Репутация: нет
Всего: нет



Действительно, хорошее решение. Спасибо за помощь! smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1636 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.