История изменений
Исправление AntonI, (текущая версия) :
Вряд ли отвечает на вопросы, да?
Совсем не отвечает;-( На первый вопрос Вы видимо ответа не знаете. На второй…
Теоретически можно добиться 100% точности, но с оговорками. Терять информацию - терять деньги, это плохо.
Теоретически есть две, и только две возможности вообще не терять деньги:
-
Если не хотите терять информацию на базовых арифметических операциях - берите честные рациональные числа. Но это медленно работает.
-
Если не хотите терять деньги при потере информации - делайте атомарным распределение числа между счетами, так что бы сумма сохранялась. Это работает быстро, но немного странно выглядит - в такой алгебре нет операции деления а есть какая то функция
template <int D> void MyNumber::split(const std::array<float, D-1> fraction, std::array<MyNumber, D> &result) const;
// sum fraction <= 1
То что Вы пытаетесь сделать ни то ни се - вроде код должен сказать когда начались потери, но на то что он говорит можно не смотреть. А если посмотреть и увидеть что потери начались, то непонятно что с этим делать и как потерь избежать.
И слушайте внимательно bugfixer, он в этой области съел столько собак что любой корейский гурман от зависти умрет.
Исходная версия AntonI, :
Вряд ли отвечает на вопросы, да?
Совсем не отвечает;-( На первый вопрос Вы видимо ответа не знаете. На второй…
Теоретически можно добиться 100% точности, но с оговорками. Терять информацию - терять деньги, это плохо.
Теоретически есть две, и только две возможности вообще не терять деньги:
-
Если не хотите терять информацию на базовых арифметических операциях - берите честные рациональные числа. Но это медленно работает.
-
Если не хотите терять деньги при потере информации - делайте атомарным распределение числа между счетами, так что бы сумма сохранялась. Это работает быстро, но немного странно выглядит - в такой алгебре нет операции деления а есть какая то функция
void MyNumber::split(const int fraction[], MyNumber result[], int sz) const;
То что Вы пытаетесь сделать ни то ни се - вроде код должен сказать когда начались потери, но на то что он говорит можно не смотреть. А если посмотреть и увидеть что потери начались, то непонятно что с этим делать и как потерь избежать.
И слушайте внимательно bugfixer, он в этой области съел столько собак что любой корейский гурман от зависти умрет.