The rules are as follows:
1. st is used with numbers ending in 1 (e.g. 1st, pronounced first)
2. nd is used with numbers ending in 2 (e.g. 92nd, pronounced ninety-second)
3. rd is used with numbers ending in 3 (e.g. 33rd, pronounced thirty-third)
Note* : As an exception to the above rules, all the "teen" numbers ending with 11, 12
or 13 use -th (e.g. 11th, pronounced eleventh, 112th, pronounced one hundred
[and] twelfth)
th is used for all other numbers (e.g. 9th, pronounced ninth).
The following JavaScript code (rewritten in Jun '14) accomplishes this:
function ordinal_suffix_of(i) {
var j = i % 10,
k = i % 100;
if (j == 1 && k != 11) {
return i + "st";
}
if (j == 2 && k != 12) {
return i + "nd";
}
if (j == 3 && k != 13) {
return i + "rd";
}
return i + "th";
}