better float type handling