improved float/double support