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

start [/forum/topic.php?fid=16&gotonew=1&tid=1342267]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
157ms |
get topic data: |
8ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 445ms |

| 0 / 0 |
