Advertisement
Guest User

Zahl in Zahlwort umwandeln

a guest
Aug 24th, 2013
217
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 2.33 KB | None | 0 0
  1. /*
  2.     Von: rotering-net.de | PHP-Skript: Zahl in Zahlwort umwandeln
  3.                 Umsetzung: pwnfl4sh - 2013
  4. */
  5. #if defined _num2text_inc
  6.     #endinput
  7. #endif
  8. #define _num2text_inc
  9.  
  10. #if !defined MAX_NUM_LEN
  11.     #define MAX_NUM_LEN 150
  12. #endif
  13.  
  14. static number[20][9] =
  15. {
  16.     "null",
  17.     "ein",
  18.     "zwei",
  19.     "drei",
  20.     "vier",
  21.     "fünf",
  22.     "sechs",
  23.     "sieben",
  24.     "acht",
  25.     "neun",
  26.     "zehn",
  27.     "elf",
  28.     "zwölf",
  29.     "dreizehn",
  30.     "vierzehn",
  31.     "fünfzehn",
  32.     "sechzehn",
  33.     "siebzehn",
  34.     "achtzehn",
  35.     "neunzehn"
  36. };
  37.  
  38. static zehner[10][8] =
  39. {
  40.     "",
  41.     "",
  42.     "zwanzig",
  43.     "dreißig",
  44.     "vierzig",
  45.     "fünfzig",
  46.     "sechzig",
  47.     "siebzig",
  48.     "achtzig",
  49.     "neunzig"
  50. };
  51.  
  52. static group_suffix[4][2][13] =
  53. {
  54.     {"",""}, // 100
  55.     {"tausend","tausend"}, // 1.000
  56.     {"e Million "," Millionen "}, // 1.000.000
  57.     {"e Milliarde "," Milliarden "} // 1.000.000.000
  58. };
  59.  
  60. stock num2text(num,dest[],length=sizeof(dest))
  61. {
  62.     if(num >= -2000000000 && num <= 2000000000 && num != 0)
  63.     {
  64.         if(num < 0) format(dest,length,"minus %s",num2text_group(floatround(floatabs(num))));
  65.         else format(dest,length,num2text_group(floatround(floatabs(num))));
  66.     }
  67.     else
  68.     {
  69.         format(dest,length,number[0]);
  70.     }
  71.     return 1;
  72. }
  73.  
  74. stock num2text_group(num,level=0,numstr[MAX_NUM_LEN]="")
  75. {
  76.     if(num == 0) return numstr;
  77.    
  78.     new group_number = num % 1000, res[MAX_NUM_LEN];
  79.     if(group_number == 1) format(res,MAX_NUM_LEN,"%s%s",number[1],group_suffix[level][0]);
  80.     else if(group_number > 1)
  81.     {
  82.         new fst_digit = floatround(floatdiv(group_number,100),floatround_floor);
  83.         if(fst_digit) format(res,MAX_NUM_LEN,"%shundert",number[fst_digit]);
  84.        
  85.         new lst_digits = group_number % 100;
  86.         new snd_digit = floatround(floatdiv(lst_digits,10),floatround_floor);
  87.         new trd_digit = lst_digits % 10;
  88.        
  89.         if(lst_digits != 0)
  90.         {
  91.             if(lst_digits == 1) format(res,MAX_NUM_LEN,"%s%ss",res,number[1]);
  92.             else if(lst_digits <= 19) format(res,MAX_NUM_LEN,"%s%s",res,number[lst_digits]);
  93.             else
  94.             {
  95.                 if(trd_digit) format(res,MAX_NUM_LEN,"%s%sund",res,number[trd_digit]);
  96.                 format(res,MAX_NUM_LEN,"%s%s",res,zehner[snd_digit]);
  97.             }
  98.         }
  99.        
  100.         format(res,MAX_NUM_LEN,"%s%s",res,group_suffix[level][1]);
  101.     }
  102.  
  103.     new numb = floatround(floatdiv(num,1000),floatround_floor);
  104.     level ++;
  105.     format(numstr,MAX_NUM_LEN,"%s%s",res,numstr);
  106.     num2text_group(numb,level,numstr);
  107.     return numstr;
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement