JQuery add two numbers

1.2k Views Asked by At

I trying to add the following two numbers:

hh: 1 (hours) mm: 45 (Minutes)

I want to have as decimal result the the following: 1.75

But I am getting as result: 10.75. I tried with .toFixed(2)...

Could you please advise where I am doing the mistake?

$("#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);
});
4

There are 4 best solutions below

1
On BEST ANSWER

The result returns 10.75 because hh = 1 and dmm = 0.75, and + operator concatenates them.

Try,

$("#x_decimalstd").val(+hh+(+dmm));

or

$("#x_decimalstd").val(Number(hh)+Number(dmm));
0
On

Stop using toFixed(), it's converting to strings when you don't want to.

Here's a fixed corrected example:

$("#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" />

0
On

The following code solved my problem. Thanks a lot for your support.

$("#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);
})
0
On
var hh = parseInt($("#x_hh").val());
var dmm = parseFloat($("#x_mm").val()/60).toFixed(2);
$("#x_decimalstd").val(hh+dmm);

hh is an int but dmm is a string, so this treats them as string concatenation instead of numeric addition. Better to do:

var hh = parseInt($("#x_hh").val());
var mm = parseFloat($("#x_mm").val());
var total = hh + mm / 60;
$("#x_decimalstd").val(total.toFixed(2));