我尝试添加以下两个数字:
hh:1(小时) mm:45(分钟)
我希望得到以下十进制结果:1.75
但我得到的结果是:10.75。我尝试了.toFixed(2)
...
你能告诉我在哪里犯这个错误吗?
$("#x_hh").change(function() {
var hh = parseInt($("#x_hh").val());
var mm = parseFloat($("#x_mm").val());
var dmm = parseFloat($("#x_mm").val()/60).toFixed(2);
var studmin =$("#x_hh").val()+":"+$("#x_mm").val();
$("#x_decimalstd").val(hh+dmm);
$("#x_stdmin").val(studmin);
});
答案 0 :(得分:1)
结果返回10.75
,因为hh = 1
和dmm = 0.75
以及+
运算符将它们连接起来。
尝试,
$("#x_decimalstd").val(+hh+(+dmm));
或
$("#x_decimalstd").val(Number(hh)+Number(dmm));
答案 1 :(得分:0)
var hh = parseInt($("#x_hh").val());
var dmm = parseFloat($("#x_mm").val()/60).toFixed(2);
$("#x_decimalstd").val(hh+dmm);
hh是一个int,但是dmm是一个字符串,所以这将它们视为字符串连接而不是数字加法。更好:
var hh = parseInt($("#x_hh").val());
var mm = parseFloat($("#x_mm").val());
var total = hh + mm / 60;
$("#x_decimalstd").val(total.toFixed(2));
答案 2 :(得分:0)
停止使用toFixed()
,当您不想要时,它会转换为字符串。
这是 fixed 更正的示例:
$("#x_hh").change(function() {
var hh = parseInt($("#x_hh").val());
var mm = parseFloat($("#x_mm").val());
var dmm = parseFloat($("#x_mm").val()/60);
var studmin =$("#x_hh").val()+":"+$("#x_mm").val();
$("#x_decimalstd").val(hh+dmm);
$("#x_stdmin").val(studmin);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input id="x_hh" value="" />
<input id="x_mm" value="45"/>
<input id="x_decimalstd" />
<input id="x_stdmin" />
&#13;
答案 3 :(得分:0)
以下代码解决了我的问题。非常感谢您的支持。
$("#x_h").change(function() {
var h = parseInt($("#x_h").val());
var mm = parseFloat($("#x_mm").val());
var total = h + (mm / 60);
var studmin =$("#x_h").val()+":"+$("#x_mm").val();
$("#x_decimalstd").val(total.toFixed(2));
$("#x_stdmin").val(studmin);
})