double convert and cover all cases