我目前正在使用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);
答案 0 :(得分:1)
当你从>>> import string
>>> table = str.maketrans({}.fromkeys(string.punctuation))
>>> "This. has? punctuation,".translate(table)
'This has punctuation'
的结果中减去1时(即使8.333333333333334.toFixed(1)
返回一个字符串,javascript允许你这样做),结果不是7.3,因为机器正在使用二进制浮点运算。例如:
Number#toFixed
要解决此问题,请执行所有算术运算,然后然后调用0.1 + 0.2 // -> 0.30000000000000004
:
.toFixed(1)