나는 나의 웹 사이트에있는 지불 요금을 산출하는 기능을 썼다 그러나 javascript와 PHP에있는 다른 결과를 준다. 이 코드를 htm/html 파일에 복사해야합니다. bug.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>
?
http://stackoverflow.com/questions/1458633/elegant-workaround-for-javascript-floating-point-number-problem 도움이 될 수 있습니다. – Loktar