
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
12.05.2012, 14:56
|
|||
|---|---|---|---|
Точная арифметика |
|||
|
#18+
Подскажите, пожалуйста, какие существуют паттерны для точной арифметики? Нужно реализовать корректную обработку случаев 3 * (1 / 3) == 1 Или хотя бы по каким словам погуглить? Где-то на форуме попадался уже такой топик, а найти не могу( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.05.2012, 15:06
|
|||
|---|---|---|---|
|
|||
Точная арифметика |
|||
|
#18+
MyNiGoo, Что-то типа "символьная арифметика"; возможно - "классы для работы с рациональными числами". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.05.2012, 15:11
|
|||
|---|---|---|---|
|
|||
Точная арифметика |
|||
|
#18+
если числа окажутся вещественными, то вместо А == В можно делать abs(A-B) < 0.00001 (количество нулей выбирается самостоятельно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.05.2012, 15:48
|
|||
|---|---|---|---|
Точная арифметика |
|||
|
#18+
немного неверно меня поняли, смысл в том, чтобы цифры, которые потом пойдут в БД, получились вот такими: 1 / 3 = 0,33 1 / 3 = 0,33 1 / 3 = 0,3 4 за счет какого именно числа будет нивелироваться погрешность, безразлично. Главное - подход, при котором round не понадобится. Встречал ведь где-то описание паттерна для таких нужд(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.05.2012, 15:55
|
|||
|---|---|---|---|
|
|||
Точная арифметика |
|||
|
#18+
MyNiGoo, Непонятно. Тогда это должен быть, к примеру, объект "вычислитель", который считает с избыточной точностью и при своём "округлении" учитывает накопленную погрешность. Потому что у Вас получается, что для вычисления 1/3 недостаточно знать делимое и делитель, т.к. получаются разные результаты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
12.05.2012, 16:32
|
|||
|---|---|---|---|
Точная арифметика |
|||
|
#18+
MyNiGoo1 / 3 = 0,33 1 / 3 = 0,33 1 / 3 = 0,3 4 1 / 3 = a 1 / 3 = b 1 / 3 = c = 1 - a - b ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=16&mobile=1&tid=1342267]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
198ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 530ms |

| 0 / 0 |
