阿拉伯数字转罗马

发布时间 2023-04-12 13:44:19作者: jonney_wang
        private string convertRoman(int num) {
            var ans = "";
            var k = (int)Math.Floor(Convert.ToDecimal(num / 1000));
            var h = (int)Math.Floor(Convert.ToDecimal((num % 1000) / 100));
            var t = (int)Math.Floor(Convert.ToDecimal((num % 100) / 10));
            var o = num % 10;
            var one = new[] { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" };
            var ten = new[] { "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" };
            var hundred = new[] { "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" };
            var thousand = "M";
            for (var i = 0; i < k; i++) {
                ans += thousand;
            }
            if (h > 0) ans += hundred[h - 1];
            if (t > 0) ans += ten[t - 1];
            if (o > 0) ans += one[o - 1];
            return ans;
        }