caesar shift handles floating point arguments