有一个公式在服务器端和客户端的不同结果
Has one formula the different results in server side and client side?
我在我的网站上写了一个函数来计算付款费用,但它在javascript和php中给出了不同的结果。您应该将此代码复制到 htm/html 文件中。
错误中的代码.php:
<table style="background-color:#ccc; width:600px; font-family:Tahoma">
<tbody><tr style="background-color:#00CCFF"><td>original number</td><td>phpToFixed()</td><td>jsToFixed()</td><td>phpCalc</td><td>jsCalc</td></tr>
<script>
function jsToFixed(i) {
return(Math.floor(i * 100) / 100);
}
function jsCalc(ob){
val=jsToFixed(ob);
if(val>0&&val!=''){
result = jsToFixed(0.95*ob);
}else{
result = 0;
}
if(result==val&&result!=0){
result-=0.01;
}
return result;
}
<?php
function phpToFixed($amount){
$inp= floor($amount * 100) / 100;
return $inp;
}
function phpCalc($amount){
$inp= phpToFixed($amount);
if($inp>0&&$inp!=''){
$result = phpToFixed($amount*0.95);
}else{
$result = 0;
}
if($result==$inp&&$result!=0){
$result-=0.01;
}
return $result;
}
for($i=0;$i<1;$i+=0.009){
?>
document.write("<tr><td class='org'><? echo $i; ?> </td><td class='fix'> <? echo phpToFixed($i); ?> </td><td class='fix'>"+jsToFixed(<? echo $i; ?>)+"</td><td class='calc'>"+jsCalc(<? echo $i; ?>)+"</td><td class='calc'>"+<? echo phpCalc($i); ?>+" </td></tr> ");
<?php
}
?>
</script>
</tbody>
</table>
有人能弄清楚吗?
在处理货币时,始终使用整数数学。例如,如果您的货币是美元,请始终以美分计算价格。
浮点数不能准确地表示0.01
。因此,您遇到问题也就不足为奇了。
然而,整数可以准确地表示1
,当你完成计算时,你可以除以 100 并round
到小数点后两位 - 任何 FP 误差都太小而没有任何影响。
相关文章:
- node.js+MySQL;JSON结果-回调问题&没有响应客户端
- 在客户端缓存大量 json 结果
- 有一个公式在服务器端和客户端的不同结果
- 服务器端函数调用客户端Javascript函数以获取结果
- Math.sin()在服务器/客户端上给出不同的结果
- 谷歌云端点没有结果通过JavaScript客户端
- Node.js客户端vs.服务器-相同的代码不同的结果
- 等着流星.客户端的呼叫结果
- 在Spring MVC中返回@Async方法结果,并将其返回给Ajax客户端
- 如何用c#向客户端显示确认对话框并使用结果
- ASP.使用JQuery更新客户端双列表框,以及如何在服务器端检索结果
- 是否可以在Internet Explorer 8+中对客户端XSL转换的结果执行XPATH查询?
- Redis客户端和节点js - hgetall方法失败,结果为空
- 使用POST传递客户端地理编码结果
- 客户端successHandler为null,但服务器日志显示结果
- Jsreport在从客户端和服务器进行渲染时显示不同的结果
- ASP.NET MVC 返回文件结果,其中包含要在客户端处理的其他数据
- 缓存谷歌地图客户端地理编码结果
- MarkLogic 8 -流大型结果集到文件- JavaScript - Node.js客户端API
- AppScan结果显示客户端跨帧脚本攻击错误