[英]Rounding Decimals
试图教自己一些东西,只能取得一半。 我有一些代码为我做一些数学运算,但是它抛出了错误的答案,因为我无法将其舍入到小数点后两位。 我希望有人能提供帮助。
示例:在“ sec”输入中输入34,“ decimal”将显示为.57
这是小提琴上的链接。 http://jsfiddle.net/dgtlkvn/mHsgt/
这就是我所知道的JavaScript所在的问题所在。
$(document).ready (
function() {
$('#min').keyup(calculate);
$('#sec').keyup(calculate);
$('#dec').keyup(calculate);
$('#dis').keyup(calculate);
$('#kilo').keyup(calculate);
$('#speed').keyup(calculate);
});
function calculate(e) {
$('#dec').val($('#sec').val() / 60);
$('#dis').val($('#min').val() + $('#dec').val());
$('#kilo').val(60 / $('#dis').val());
}
表单控件的值始终以字符串形式返回。 大多数算术运算会将其转换为数字,但不会转换为+
,如果任何参数为字符串,则+
会进行连接,因此
$('#dis').val($('#min').val() + $('#dec').val());
会串联,而不是加法。
要将数字四舍五入到固定的位数,请使用toFixed 。 示例代码(为此我放弃jQuery更简单,更有效):
function calculate(evt) {
var el = evt.target || evt.srcElement;
var f = el.form;
if (!f) return;
// Division converts strings to numbers
var dec = f.sec.value / 60;
// Use unary + to convert strings to numbers for addition
var dis = +f.min.value + +f.dec.value;
// Dispaly values to 2 decimal places (or round if preferred)
f.dec.value = dec.toFixed(2);
f.dis.value = dis.toFixed(2);
f.kilo.value = (60 / dis).toFixed(2);
}
一些HTML:
<form id="f0" onkeyup="calculate(event);">
<table>
<tr><td>Min:<td><input type="text" name="min">
<tr><td>Sec:<td><input type="text" name="sec">
<tr><td>Dec:<td><input type="text" name="dec">
<tr><td>Dis:<td><input type="text" name="dis">
<tr><td>Km:<td><input type="text" name="kilo">
<tr><td>Speed:<td><input type="text" name="speed">
</table>
</form>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.