2012-03-29 17 views
9

Làm cách nào để làm tròn giá trị từ trường văn bản với kết quả parseFloat trong đó? Ứng dụng này về cơ bản tổng hợp giá trị của tất cả các nút radio khi được nhấp và hiển thị tổng trong một hộp văn bản.Làm thế nào để làm tròn kết quả parseFloat trong Jquery/Javascript?

Mã bên dưới hoạt động hoàn hảo nếu giá trị nút radio là số nguyên, tuy nhiên nếu tôi muốn có giá trị dấu phẩy động trên nút radio, tổng giá trị sẽ có 100.0000000679 khi cần là 100. Mọi lời khuyên sẽ được đánh giá rất nhiều. Cảm ơn trước.

function calcscore(){ 
    var score = 0; 
    $(".calc:checked").each(function(){ 
    score+=parseFloat($(this).val(),10); 
    }); 
    $("input[name=openingsum]").val(score); 
} 
$().ready(function(){ 
    $(".calc").change(function(){ 
     calcscore(); 
    }); 
}); 

HTML Code:

<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes 
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="0" />No 
+1

tôi tin rằng bạn sẽ tìm thấy điều này áp dụng đối với nhu cầu của bạn [http : //stackoverflow.com/questions/4640404/parsefloat-rounding] [1] [1]: http://stackoverflow.com/questions/4640404/parsefloat-rounding – djmadscribbler

Trả lời

11

Lúc đầu tôi nghĩ rằng bạn cung cấp cho chúng ta một ví dụ khác nhau sau đó mong đợi. Nếu bạn cho chúng tôi biết điều gì đó về việc nhận được 100.0000000679 và trong mã của bạn chỉ có giá trị là 1.6666666666666666666666666666667 có điều gì đó không đúng :)

Vì vậy, tôi hy vọng vấn đề của bạn chỉ là chính xác. Cho rằng bạn có thể sử dụng .toFixed()

Xem example on jsfiddle

HTML:

<input class="calc" name="v1" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes 
<input class="calc" name="v1" type="radio" onclick="ver2(this);" value="0" />No 
<br> 
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes 
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="0" />No 
<br> 
<input class="calc" name="v3" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes 
<input class="calc" name="v3" type="radio" onclick="ver2(this);" value="0" />No 
<br> 
<input type="text" name="openingsum">​ 

JAVASCRIPT:

function calcscore(){ 
    var score = 0; 
    $(".calc:checked").each(function(){ 
    score+=parseFloat($(this).val(),10); 
    }); 
    score = score.toFixed(2); 
    $("input[name=openingsum]").val(score); 
} 
$().ready(function(){ 
    $(".calc").change(function(){ 
     calcscore(); 
    }); 
});​ 
+0

Neysor: Cảm ơn bạn một lần nữa vì đã đóng góp đáng kể cho công việc của tôi. Như mọi khi, bạn đã rất nhanh chóng và là người đóng góp lớn cho công việc của tôi. Đầu vào của bạn luôn luôn là một thời điểm rất wow mỗi khi tôi thực hiện nó vào công việc của tôi. Giải pháp của bạn rất đáng được giới thiệu cho những người mới khác như tôi. Cảm ơn bạn. –

+0

@ Davinchie_214 không sao cả! Tôi ở đây đã đăng ký để giúp mọi người. Nhưng như tôi đã thấy bây giờ, djmadscribbler cung cấp cho bạn những gợi ý chính xác. Có lẽ lần sau bạn có một cái nhìn lớn hơn về điều đó. Nếu bạn đã có, hơn có lẽ bạn có thể cố gắng để viết những gì đã xảy ra sai trong khi làm điều đó :) – Neysor

+0

Bằng cách này Neysor, các giá trị tôi sử dụng ở trên chỉ dành cho mục đích mô phỏng. Tôi định sử dụng nó theo cách đó để tôi có thể giải thích rõ hơn những gì tôi muốn xảy ra với câu hỏi trên. Một điều nữa mặc dù, tổng số điểm chỉ hiển thị 99 khi nó nên 100 khi tôi thay đổi parseFloat trở lại parseInt. Điều này có thể là một chút trục trặc hoặc tôi có thể đã làm điều gì đó sai một lần nữa. Nhưng đừng nhầm lẫn, bây giờ tôi đang làm việc, ngoại trừ khi tôi thay đổi nó thành parseInt, chương trình đã đi sai. Cảm ơn các đầu vào. –