It is SQL server's handling of divisions of integers (integer / integer yields an integer - IOW 50135/17808 = 2 not 2.82). For a workaround you can do this:
SELECT top(1) cast( cast(reading as decimal)/datediff(second,emp_start,emp_end)*3600 as int) as y from bin1_final