0
Node.js 플랫폼에서 Stripe로 지불하는 안전한 방법을 만들려고합니다. 현재https://github.com/MikeMcl/bignumber.js/을 사용하여 온라인 구매의 부분합 및 총계를 결정하기 위해 계산 작업의 정확성을 유지하기 위해 작업을 수행합니다.줄무늬 노드 임의의 정밀도 숫자
let x = BigNumber(numberOfItems);
let y = BigNumber(costPerItem);
let z = BigNumber(taxRatePerOrderTotal/100);
let costToCharge = x.times(y).plus(x.times(y).times(z))
내 관심사는 내가 할 때 낭비로 이동하는 모든 아름다운 임의 정밀도의 소수 연산을하지 않는다는 것입니다 잘라, 따라서 IEEE764 플로트로 다시 변경됩니다
costToCharge.toNumber()
약간의 정밀도를 벗어났다. 그리고 스트라이프 문서에 따르면
Number
이 걸리고 문제를 해결할 문자열 버전이
amount
이라고 생각하지 않습니다.
예 그러나 노드의 "정수"는 실제로 정수를 나타내는 double입니다. – Thalatta
두 정밀도의 정밀도에 관계없이 Charge가 정수로만 계산 될 수 있으므로 궁극적으로 '두 자리로 반올림'하고 '100으로 곱하기'해야합니다. – floatingLomas
맞습니다. 그렇지만 주어진 주, 도시 및 정부의 반올림 전략을 따르는 돈을 처리 할 때 그것은 필요한 부정확성입니다. 그와 상관없이, 높은 돈 값을 수레로 산술 연산을 수행하는 것과 같이 사소한 방식으로 부정확 한 두 개의 소수로 반올림되는 값을 만들기 위해 할 수있는 일이 있습니다. – Thalatta