我使用ajax隨着數量的增加產生圖書價格。我遇到的唯一問題是當我嘗試生成總數(請參閱JS代碼)並且導致了一些問題(值將連接而不是添加)。我通過舍入變量'amount'來解決問題。但我試圖理解爲什麼連接發生。這裏是我的PHP代碼:爲什麼我必須再次舍入這個值?
if(isset($_GET["amount1"]))
{
$amount1 = $_GET["amount1"];
$error="";
if($amount1 == "" || !preg_match("/^[0-9]+$/", $amount1))
{
$error .= "Please enter a valid number";
echo $error;
}
else{
echo round($amount1*16.65, 2);
}
}
這是JS代碼:
if(xhr.status == 200 && xhr.readyState == 4)
{
var res = xhr.responseText;
if(res.match(/\d+/)== null){
document.getElementById("err3").innerHTML = res;
document.getElementById("book3").innerHTML = "";
total(0,3);
}
else{
document.getElementById("book3").innerHTML = res;
document.getElementById("err3").innerHTML = "";
total(res,3);
}
}
var book1 = 0;
var book2 = 0;
var book3 = 0;
function total(amount, book)
{
// amount = Math.round(amount*100)/100; --> this is what solved it but I don't
//know why I need it since amount was rounded by PHP code
if(book == 1)
book1 = amount;
if(book == 2)
book2 = amount;
if(book == 3)
book3 = amount;
var total = book1 + book2 + book3;
document.getElementById("total").innerHTML = total;
}
感謝
很明顯,更重要的一點。就像快速註釋一樣,使用Number()會根據字符串將字符串設置爲int或float,而解析float將四捨五入爲int值,但將額外的內存保存爲float。 – Anthony 2012-04-11 04:52:03