In RubyMotion, floats are actually objects, so you need to use %@
instead:
NSLog "rotation rate = [%@, %@, %@]", motion.rotationRate.x, motion.rotationRate.y, motion.rotationRate.z
If you wanted to format the numbers (e.g. to 3 decimal places), you would need to format the arguments separately:
NSLog "rotation rate = [%@, %@, %@]", "%.3f" % motion.rotationRate.x, "%.3f" % motion.rotationRate.y, "%.3f" % motion.rotationRate.z
See this twitter conversation with one of the RubyMotion developers.