Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Von: rotering-net.de | PHP-Skript: Zahl in Zahlwort umwandeln
- Umsetzung: pwnfl4sh - 2013
- */
- #if defined _num2text_inc
- #endinput
- #endif
- #define _num2text_inc
- #if !defined MAX_NUM_LEN
- #define MAX_NUM_LEN 150
- #endif
- static number[20][9] =
- {
- "null",
- "ein",
- "zwei",
- "drei",
- "vier",
- "fünf",
- "sechs",
- "sieben",
- "acht",
- "neun",
- "zehn",
- "elf",
- "zwölf",
- "dreizehn",
- "vierzehn",
- "fünfzehn",
- "sechzehn",
- "siebzehn",
- "achtzehn",
- "neunzehn"
- };
- static zehner[10][8] =
- {
- "",
- "",
- "zwanzig",
- "dreißig",
- "vierzig",
- "fünfzig",
- "sechzig",
- "siebzig",
- "achtzig",
- "neunzig"
- };
- static group_suffix[4][2][13] =
- {
- {"",""}, // 100
- {"tausend","tausend"}, // 1.000
- {"e Million "," Millionen "}, // 1.000.000
- {"e Milliarde "," Milliarden "} // 1.000.000.000
- };
- stock num2text(num,dest[],length=sizeof(dest))
- {
- if(num >= -2000000000 && num <= 2000000000 && num != 0)
- {
- if(num < 0) format(dest,length,"minus %s",num2text_group(floatround(floatabs(num))));
- else format(dest,length,num2text_group(floatround(floatabs(num))));
- }
- else
- {
- format(dest,length,number[0]);
- }
- return 1;
- }
- stock num2text_group(num,level=0,numstr[MAX_NUM_LEN]="")
- {
- if(num == 0) return numstr;
- new group_number = num % 1000, res[MAX_NUM_LEN];
- if(group_number == 1) format(res,MAX_NUM_LEN,"%s%s",number[1],group_suffix[level][0]);
- else if(group_number > 1)
- {
- new fst_digit = floatround(floatdiv(group_number,100),floatround_floor);
- if(fst_digit) format(res,MAX_NUM_LEN,"%shundert",number[fst_digit]);
- new lst_digits = group_number % 100;
- new snd_digit = floatround(floatdiv(lst_digits,10),floatround_floor);
- new trd_digit = lst_digits % 10;
- if(lst_digits != 0)
- {
- if(lst_digits == 1) format(res,MAX_NUM_LEN,"%s%ss",res,number[1]);
- else if(lst_digits <= 19) format(res,MAX_NUM_LEN,"%s%s",res,number[lst_digits]);
- else
- {
- if(trd_digit) format(res,MAX_NUM_LEN,"%s%sund",res,number[trd_digit]);
- format(res,MAX_NUM_LEN,"%s%s",res,zehner[snd_digit]);
- }
- }
- format(res,MAX_NUM_LEN,"%s%s",res,group_suffix[level][1]);
- }
- new numb = floatround(floatdiv(num,1000),floatround_floor);
- level ++;
- format(numstr,MAX_NUM_LEN,"%s%s",res,numstr);
- num2text_group(numb,level,numstr);
- return numstr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement