Простой ответ заключается в том, что это связано с ошибкой округления в уравнениях, использующих числа с плавающей запятой. Это потому, что, как правило, нет точного двоичного представления числа с плавающей запятой, поэтому все, что у вас есть, это приближения.
Я заметил, что у вас есть:
(percentageToRefund * 0.01)
в первом уравнении и:
(percentageToRefund * 0.01) * 100
во втором.
Это последнее выражение приведет к ошибке округления, так как вы сначала делите на 100, а затем умножаете на 100. Входные данные не будут равны выходным, разница зависит от архитектуры машины, ОС, языка и компилятора.
Если вы имеете дело с деньгами, вы должны использовать тип decimal
(при условии C #)