Можно, и это частая задача. Обычные числа в JavaScript — двоичные с плавающей точкой, поэтому сложение и умножение сумм дают мелкие погрешности, зависящие от порядка операций. Отдельного десятичного типа для денег нет, хотя с 2020 года есть целочисленный тип произвольной точности BigInt: обычное число остаётся точным для целых лишь до предела Number.MAX_SAFE_INTEGER, а применять его или нет — решает разработчик. Эксперт не объявляет один способ правильным, а устанавливает, какой выбран у вас и к чему привёл.
Проверка идёт двумя разными сравнениями, и путать их нельзя. Первое: расчёт повторяют на ваших данных и сверяют с вашим же документом — это проверка происхождения цифры, ответ на вопрос «эта ли программа её посчитала». Второе: полученный результат сверяют с эталоном из договора или задания — это проверка правильности. Ловушка в том, что при ошибке в коде первое сравнение как раз совпадёт: программа воспроизведёт собственную ошибку, и подтверждение происхождения примут за подтверждение верности.
Смотрят и типовые места: момент и знак округления, совпадение расчётов на клиенте и на сервере, скидки, налоги и возвраты. Сохраните входные данные и спорные документы: без них перезапуск ничего не докажет.