简体   繁体   English

我的JavaScript财务计算题

[英]My JavaScript financial calculation problem

We are working on financial calculations.我们正在进行财务计算。 JavaScript front-end code gives different results and C# backend gives different results. JavaScript 前端代码给出不同的结果和 C# 后端给出不同的结果。 Please give me a solution to get the same result in both languages.请给我一个解决方案,以两种语言获得相同的结果。

I mention two Cases in my example.我在示例中提到了两个案例。 The first case is not working and another is working.第一个案例不工作,另一个工作。

I want results like C# code those are my expected results.我想要像 C# 代码这样的结果,这些是我的预期结果。

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>

This single function is the simplest answer I found.这个 function 是我找到的最简单的答案。

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);
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM