util.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // 将阿拉伯数字转换为罗马数字
  2. function intToRoman(num) {
  3. if (num < 1) {
  4. return num;
  5. }
  6. const romanNumerals = [
  7. {limit: 1000000, roman: "M̄"}, // 使用 M̄ 表示 1000000
  8. {limit: 900000, roman: "C̄M̄"},
  9. {limit: 500000, roman: "D̄"},
  10. {limit: 400000, roman: "C̄D̄"},
  11. {limit: 100000, roman: "C̄"},
  12. {limit: 90000, roman: "X̄C̄"},
  13. {limit: 50000, roman: "L̄"},
  14. {limit: 40000, roman: "X̄L̄"},
  15. {limit: 10000, roman: "X̄"},
  16. {limit: 9000, roman: "ĪX̄"},
  17. {limit: 5000, roman: "V̄"},
  18. {limit: 4000, roman: "ĪV̄"}, // 使用 ĪV̄ 表示 4000
  19. {limit: 1000, roman: "M"},
  20. {limit: 900, roman: "CM"},
  21. {limit: 500, roman: "D"},
  22. {limit: 400, roman: "CD"},
  23. {limit: 100, roman: "C"},
  24. {limit: 90, roman: "XC"},
  25. {limit: 50, roman: "L"},
  26. {limit: 40, roman: "XL"},
  27. {limit: 10, roman: "X"},
  28. {limit: 9, roman: "IX"},
  29. {limit: 5, roman: "V"},
  30. {limit: 4, roman: "IV"},
  31. {limit: 1, roman: "I"}
  32. ];
  33. let roman = '';
  34. // 遍历罗马数字数组,将其值减去相应的阿拉伯数字
  35. for (let i = 0; i < romanNumerals.length; i++) {
  36. while (num >= romanNumerals[i].limit) {
  37. roman += romanNumerals[i].roman;
  38. num -= romanNumerals[i].limit;
  39. }
  40. }
  41. return roman;
  42. }