Ordinal Number : Is there an easy way to get “st”, “nd”, “rd” and “th” endings for numbers?

by A Rahman

Masih dalam rangka bikin program kuitansi.  Dalam kuitansi pembayaran angsuran perlu disebutkan, pembayaran ke berapa dalam bahasa Inggris.  Misalnya angsuran pertama, menjadi “1st”, ke-2 menjadi “2nd”, ke-3 “3rd”, ke 13 menjadi “13th”.  Lho kok ke-13 menjadi “13th” sih?, bukannya “13rd”?

Kalau kita mengetik angka di MsWord 13 lalu diikuti rd, maka hasilnya tetap 13rd, tetapi kalau kita ketik 13th, maka oleh Word “th” akan diubah menjadi huruf kecil superscript (naik ke-atas seperti pangkat).  Jadi kalau mau nge-cek kebenaran akhiran tersebut, coba aja diketikkan ke MsWord.

Coba lihat hasil eksperimen saya di bawah ini di MsWord.

1st     11th   21st   31st   41st             141st        241st   211th

2nd     12th   22nd 32nd 42nd            312th   502nd  722nd

3rd     13th   23rd   33rd   43rd           433rd    413th      

4th     14th   24th   34th   44th

5th     15th   25th   35th   45th

6th     16th

7th     17th

8th     18th

9th     19th

10th   20th

Ternyata polanya kalau angka di belakangnya bukan 11,12,13 maka belakangnya selalu diisi “st”, “nd” dan “rd”.  Selain itu selalu diisi “th”

Nah setelah nemu disini potongan programnya dalam beberapa bahasa Pemrograman, aku coba translate ke Delphi jadi seperti di bawah ini :

Function GetNumberAsOrdinalString(nNumber:integer):string;
var cExt:string;
    Ones,Tens,nHasil : word;
begin
  Ones := 0;
  Tens := 0;
  cExt := '';

  divmod(nNumber,10,nHasil,Ones);
  //Tens := floor(
  divmod(floor(nNumber/10),10,nHasil,Tens);
  if Tens=1 then cExt := 'th'
  else
  case Ones of
    1 : cExt := 'st';
    2 : cExt := 'nd';
    3 : cExt := 'rd';
    else cExt := 'th';
  end;
  result := cExt;
end;
Contoh cara pakainya : SayOrdinal := GetNumberAsOrdinalString(strtoint(edit1.Text));

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s