Можете ли вы избежать ошибок с плавающей запятой в финансовых приложениях с Math.round (результат * 100) / 100? - PullRequest
0 голосов
/ 14 апреля 2020

Я читал о машинописных типах чисел типа с плавающей запятой и может привести к ошибкам при использовании в финансовых программах, где числа представлены с двумя десятичными знаками. Я понимаю, что я могу использовать длинные, представляющие все в центах, но умножение валюты утомительно, потому что, например, $ 1,00 x $ 1,00 = $ 10,00, если вы не забудете поделить на 10 ^ (n * 2), где n - количество валютных факторов.

Я подумал, что, возможно, я мог бы просто использовать что-то вроде:

let result = [some floating math with dollar amounts]
let answer1 = Math.round(result * 100) / 100;

Для моего приложения, которое имеет дело с суммами в $, не превышающими, скажем, $ 100MM, кажется, что этого будет достаточно для ошибок как $2.00 x 20% x 10% != $0.04, но я не уверен, что это сработает во всех случаях, которые могут приводить к аналогичным ошибкам, когда я выполняю много математических операций с денежными суммами в моем приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...