The trick is to work out a scheme that works exclusively with integers.
pragma solidity 0.5.0;
contract Div {
function divider(uint numerator, uint denominator, uint precision) public pure returns(uint) {
return numerator*(uint(10)**uint(precision))/denominator;
}
}
You can send it 5,6,4 to indicate that you want 4 significant digits back (without the decimal). On the client side, you can divide the result by 10**4 to convert the response (8333) to a decimal.
Note that the client itself specified the degree of precision needed so it's fair to assume that the client also knows how to interpret the response. Think in pennies instead of dollars, for example.

It's worth noting that there is no rounding up, only truncation. The solution to that issue is to add an extra decimal of precision, add 5 and then remove a decimal of precision.
pragma solidity 0.5.0;
contract Div {
function divider(uint numerator, uint denominator, uint precision) public pure returns(uint) {
return (numerator*(uint(10)**uint(precision+1))/denominator + 5)/uint(10);
}
}
2,3,4 yields 6667 which is correct rounding.
Hope it helps.