toRoman method
Converts this number to a Roman numeral string (1–3999).
2024.toRoman() // 'MMXXIV'
Implementation
String toRoman() {
final n = toInt();
if (n < 1 || n > 3999) throw RangeError('toRoman supports 1–3999');
const vals = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1];
const syms = [
'M',
'CM',
'D',
'CD',
'C',
'XC',
'L',
'XL',
'X',
'IX',
'V',
'IV',
'I'
];
final buf = StringBuffer();
var remaining = n;
for (var i = 0; i < vals.length; i++) {
while (remaining >= vals[i]) {
buf.write(syms[i]);
remaining -= vals[i];
}
}
return buf.toString();
}