Как победить погрешность при умножении в javascript?
Потому что компьютер хранит числа в двоичном представлении.
Значит 598.68 запишется как 1.0001010110(10101110000101000111) * 29
Поскольку дробь бесконечная, а разрядность вычислений нет, то число в памяти компьютера представляется с некоторой погрешностью. При вычислениях эта погрешность, как правило, нарастает.
Очень просто, используйте исключительно целые числа.