Tôi có chức năng javascript tự động thêm các trường nhập cùng nhau, nhưng thêm các số như 1,35 + 1,35 + 1,35 mang lại cho tôi sản lượng 4.050000000000001, giống như một ví dụ. Làm thế nào tôi có thể làm tròn tổng số thập phân thứ hai thay cho chuỗi dài đó?parseFloat làm tròn
Các trường nhập sẽ có nhiều hơn chỉ là ví dụ 1.35 vì vậy tôi cần tổng số không bao giờ có nhiều hơn 2 điểm sau dấu thập phân. Dưới đây là đoạn code làm việc đầy đủ:
<html>
<head>
<script type="text/javascript">
function Calc(className){
var elements = document.getElementsByClassName(className);
var total = 0;
for(var i = 0; i < elements.length; ++i){
total += parseFloat(elements[i].value);
}
document.form0.total.value = total;
}
function addone(field) {
field.value = Number(field.value) + 1;
Calc('add');
}
</script>
</head>
<body>
<form name="form0" id="form0">
1: <input type="text" name="box1" id="box1" class="add" value="0" onKeyUp="Calc('add')" onChange="updatesum()" onClick="this.focus();this.select();" />
<input type="button" value=" + " onclick="addone(box1);">
<br />
2: <input type="text" name="box2" id="box2" class="add" value="0" onKeyUp="Calc('add')" onClick="this.focus();this.select();" />
<input type="button" value=" + " onclick="addone(box2);">
<br />
<br />
Total: <input readonly style="border:0px; font-size:14; color:red;" id="total" name="total">
<br />
</form>
</body></html>
Một số điều tôi đã cố gắng, mà nên làm việc nhưng tôi đang thực hiện rõ ràng chúng không đúng cách:
for(var i = 0; i < elements.length; ++i){
total += parseFloat(elements[i].value.toString().match(/^\d+(?:\.\d{0,2})?/));
var str = total.toFixed(2);
hoặc
for(var i = 0; i < elements.length; ++i){
total += parseFloat(elements[i].value * 100)/100).toFixed(2)
cũng đã không có may mắn với Math.floor
Bạn không thực sự cần đăng tất cả mã vì nó không thực sự liên quan đến câu hỏi ở đây. Chỉ đăng các bit liên quan. – marcog
FYI: Đoạn mã thứ hai (liên quan đến toFixed) của bạn có lỗi cú pháp. –
Để tham khảo trong tương lai, nó được giải quyết nhờ @marcog bằng cách sử dụng: 'document.form0.total.value = total.toFixed (2);' –