LINUX.ORG.RU

История изменений

Исправление AntonI, (текущая версия) :

Вряд ли отвечает на вопросы, да?

Совсем не отвечает;-( На первый вопрос Вы видимо ответа не знаете. На второй…

Теоретически можно добиться 100% точности, но с оговорками. Терять информацию - терять деньги, это плохо.

Теоретически есть две, и только две возможности вообще не терять деньги:

  1. Если не хотите терять информацию на базовых арифметических операциях - берите честные рациональные числа. Но это медленно работает.

  2. Если не хотите терять деньги при потере информации - делайте атомарным распределение числа между счетами, так что бы сумма сохранялась. Это работает быстро, но немного странно выглядит - в такой алгебре нет операции деления а есть какая то функция

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% точности, но с оговорками. Терять информацию - терять деньги, это плохо.

Теоретически есть две, и только две возможности вообще не терять деньги:

  1. Если не хотите терять информацию на базовых арифметических операциях - берите честные рациональные числа. Но это медленно работает.

  2. Если не хотите терять деньги при потере информации - делайте атомарным распределение числа между счетами, так что бы сумма сохранялась. Это работает быстро, но немного странно выглядит - в такой алгебре нет операции деления а есть какая то функция

void MyNumber::split(const int fraction[], MyNumber result[], int sz) const;

То что Вы пытаетесь сделать ни то ни се - вроде код должен сказать когда начались потери, но на то что он говорит можно не смотреть. А если посмотреть и увидеть что потери начались, то непонятно что с этим делать и как потерь избежать.

И слушайте внимательно @bugfixer, он в этой области съел столько собак что любой корейский гурман от зависти умрет.