0

我目前正在使用 Time In 和 Time Out 编写工作时间计算,以显示带 1 点的小数点工作时间。在我的情况下,我使用 .toFixed(1) 并且任何其他时间都运行良好,但是当时间是 09:10 和超时时间是 17:30 .. 结果显示为 8.333333333333334。.toFixed(1) 不适用于该十进制数。我该怎么做。

这是我的代码。

var time_in = $(elm).closest('tr').find('.time_in').text();
var time_out = $(elm).closest('tr').find('.time_out').text();
var working_time = (new Date("1970-1-1 " + time_out) - new Date("1970-1-1 " + time_in)) / 1000 / 60 / 60 ;
alert(working_time);
var total_work_hour = working_time.toFixed(1) - 1;    //get fixed decimal number and minus 1 for lunch time.
var w_time = $(elm).closest('tr').find('.work_time');
w_time.text(total_work_hour);
4

1 回答 1

1

当您从结果中减去 1 时8.333333333333334.toFixed(1)(即使Number#toFixed返回字符串,javascript 也允许您这样做),结果不是 7.3,因为机器使用的是二进制浮点运算。例如:

0.1 + 0.2 // -> 0.30000000000000004

要解决这个问题,请执行所有算术运算,然后调用.toFixed(1)

var total_work_hour = (working_time - 1).toFixed(1);
于 2017-11-08T03:51:13.920 回答