daily pastebin goal
41%
SHARE
TWEET

Zahl in Zahlwort umwandeln

a guest Aug 24th, 2013 132 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top