Estoy tratando de restar dos números con más decimales. Pero se está redondeando. ¿Cómo puedo usar BigNumber para asegurarme de que los números no estén redondeados y el cálculo sea preciso?
const myObj = { total: 5000000, filled: 4999999.9999999996870756 }; const total = new BigNumber(myObj.total); const filled = new BigNumber(myObj.filled); const remaining = total.minus(filled); console.log(total, filled, remaining); if(remaining === 0.0000000003129244) console.log("remaining calculation is correct") else console.log("incorrect calculation") <script src="https://cdnjs.cloudflare.com/ajax/libs/bignumber.js/8.0.2/bignumber.min.js" integrity="sha512-7UzDjRNKHpQnkh1Wf1l6i/OPINS9P2DDzTwQNX79JxfbInCXGpgI1RPb3ZD+uTP3O5X7Ke4e0+cxt2TxV7n0qQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>primero debe definir variables de cadena para no redondearlas. después de eso, para comparar valores de bigNumber, es mejor usar ' compareTo ' para referirse a documentos
const myObj = { total: '5000000', filled: '4999999.9999999996870756' }; const total = new BigNumber(myObj.total); const filled = new BigNumber(myObj.filled); const remaining = total.minus(filled); console.log('total',total); console.log('filled',filled); console.log('remaining', remaining); if(remaining.comparedTo(0.0000000003129244) === 0) console.log("remaining calculation is correct") else console.log("incorrect calculation") <script src="https://cdnjs.cloudflare.com/ajax/libs/bignumber.js/8.0.2/bignumber.min.js" integrity="sha512-7UzDjRNKHpQnkh1Wf1l6i/OPINS9P2DDzTwQNX79JxfbInCXGpgI1RPb3ZD+uTP3O5X7Ke4e0+cxt2TxV7n0qQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>