.toFixed(1)在8.333333333333334十进制数中不起作用

时间:2017-11-08 03:36:42

标签: javascript tofixed

我目前正在使用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);

1 个答案:

答案 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)