Estamos trabajando en los cálculos financieros. El código front-end de JavaScript da resultados diferentes y el back-end de C# da resultados diferentes. Por favor, dame una solución para obtener el mismo resultado en ambos idiomas.
Menciono dos Casos en mi ejemplo. El primer caso no funciona y el otro funciona.
Quiero resultados como el código C#, esos son mis resultados esperados.
decimal TotalItemWiseRate = Convert.ToDecimal((Convert.ToDecimal(txtQuantity.Text) * Convert.ToDecimal(txtRate.Text)).ToString("0.00")); myFunction(); function myFunction() {} function setDecimalPoint(num) { var setNumber = parseFloat(num); if (isNaN(setNumber) || setNumber == 0) { return setNumber; } else { var dotcontain = (setNumber).toString().includes("."); if (dotcontain == true) { var a = (setNumber).toString().indexOf("."); setNumber = (setNumber).toString().substring(0, a + 4); return (roundNumber(setNumber, 2)); } else { return (roundNumber(setNumber, 2)); } } } document.getElementById("Case1").innerHTML = "Javascript result: " + 756.05 * 43.5; document.getElementById("Case11").innerHTML = "Current function: " + setDecimalPoint(756.05 * 43.5); document.getElementById("Case111").innerHTML = "Calculater result: " + 32888.175; document.getElementById("Case1111").innerHTML = "C#/My Expected Result: " + 32888.18; document.getElementById("Case2").innerHTML = "Javascript result: " + 6864.48 / 100; document.getElementById("Case22").innerHTML = "Current function: " + setDecimalPoint(6864.48 / 100); document.getElementById("Case222").innerHTML = "Calculater result: " + 68.6448; document.getElementById("Case2222").innerHTML = "C#/My Expected Result: " + 68.64; function roundNumber(num, scale) { if (!("" + num).includes("e")) { return +(Math.round(num + "e+" + scale) + "e-" + scale); } else { var arr = ("" + num).split("e"); var sig = "" if (+arr[1] + scale > 0) { sig = "+"; } return +(Math.round(+arr[0] + "e" + sig + (+arr[1] + scale)) + "e-" + scale); } } <p id="Case1"></p> <p id="Case11"></p> <p id="Case111"></p> <p id="Case1111"></p> <p id="Case2"></p> <p id="Case22"></p> <p id="Case222"></p> <p id="Case2222"></p>Esta única función es la respuesta más simple que encontré.
function setDecimalPoint(num) { if (isNaN(parseFloat(num))) return 0; else { var Number = parseFloat(num); var multiplicator = Math.pow(10, 2); Number = parseFloat((Number * multiplicator).toFixed(2)); return (Math.round(Number) / multiplicator); } }