昨天我完成了 Chris Pine 的“Learn to Program”一书中的练习(9.5)。它是一个整数到老式罗马数字的转换器。
我是这样做的:
def old_roman_numeral number
roman_number = ""
while number != 0
if number % 1000 == 0
number -= 1000
roman_number += "M"
next
elsif number % 500 == 0
number -= 500
roman_number += "D"
next
elsif number % 100 == 0
number -= 100
roman_number += "C"
next
elsif number % 50 == 0
number -= 50
roman_number += "L"
next
elsif number % 10 == 0
number -= 10
roman_number += "X"
next
elsif number % 5 == 0
number -= 5
roman_number += "V"
next
else
number -= 1
roman_number += "I"
end
end
roman_number.reverse
end
puts "Please enter any number and I convert it to"
puts "Old-school Roman numerals."
puts
num = gets.chomp.to_i
puts "Your number #{num} converted to Old-school Roman is:"
puts (old_roman_numeral num)
当我运行脚本时,它会输出正确的罗马数字。
例如 1200 => MCC
但是,当我今天醒来时,我的第一反应是,这不可能!1200 % 1000 的余数是 200 而不是 0!但是为什么输出的是MCC而不是CCCCCCCCCCCC???