繁体   English   中英

Javascript 计算和 php 计算不匹配

[英]Javascript calculations and php calculations mismatch

我必须在客户端用 JavaScript 做一些计算,当用户点击提交时,我必须用 PHP 进行验证。 这样做时,我在 PHP 和 JavaScript 中得到了不同的结果。

我有以下问题。

1. JavaScript 计算会在小数点后给出额外的数字。

2. 后端验证时JavaScript 计算和PHP 计算不匹配。

<script type="text/javascript">
var a = 130;
var b = 1.3595;
var c = a * b;
console.log(c);  //176.73499999999999
console.log(c.toFixed(2));  //176.73
</script>

<?php
$a = 130;
$b = 1.3595;
$c = $a * $b;
echo $c; //176.735
echo round($c,2); //176.74
?>

两者都给出了不同的结果。所以我想要的是 JavaScript 和 PHP 上的 176.74 或 176.73。

为了获得所需的小数精度数,Math.round 需要乘法后除法(“乘除法”)。

这种“乘加=除”方法可能会产生舍入误差,但显然可以通过提高然后降低数字的指数来避免(称之为“指数”方法)。

“乘除法”:

Math.round(num*100)/100

“指数”方法:

Number(Math.round(num+'e2') + 'e-2')

试试下面的代码片段,num1 = 1.005,num2 = 1,decimals = 2。“乘除”方法出错,“指数”方法正确。

 /* the "multiply-and-divide" rounding method */ function roundmult(value, decimals) { let multiplier = 1; for (let i = 0; i < decimals; i++) { multiplier *= 10; } return Math.round(value * multiplier) / multiplier; } /* the "exponent" rounding method */ function roundexp(value, decimals) { return Number(Math.round(value + 'e' + decimals) + 'e-' + decimals); } function testIt() { let decimals = +(document.getElementById("decimals").value); let num1 = +(document.getElementById("num1").value); let num2 = +(document.getElementById("num2").value); let product = num1 * num2; let resultmult = roundmult(product, decimals); document.getElementById("multdiv").innerText = resultmult; let resultexp = roundexp(product, decimals); document.getElementById("exponent").innerText = resultexp; }
 <h1> Math.round() Test </h1> <label for="num1">num1</label> <input id="num1" type="number"> times <label for="num2">num2</label> <input id="num2" type="number"><br /> <label for="decimals">decimal places:</label> <input id="decimals" type="number"><br /><br /> <button id="doit" onclick="testIt();"> Round it! </button><br /><br /> The "multiply and divde" method result is: <span id="multdiv"></span> <br /><br /> The "exponent" method result is: <span id="exponent"></span>

你找到解决方案了吗 我有同样的问题

暂无
暂无

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

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