![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: May 2009
Сообщений: 30
|
подскажите, может есть готовые классы перевода цифирок в букавки?
вроде этого 1 -> один 233 -> двести тридцать три и т.д. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
package { /* * * * * * * * * * * * * @author wolsh * * * * 25 AUG 2009 * * * \* * * * * * * * * */ public class NumToStringConverter { private static const UNIT_ARRAY :Array = ["", " од", " дв", " три", " четыре", " пять", " шесть", " семь", " восемь", " девять", " десять", " одиннадцать", " двенадцать", " тринадцать", " четырнадцать", " пятнадцать", " шестнадцать", " семнадцать", " восемнадцать", " девятнадцать"]; private static const TEEN_ARRAY :Array = [" двадцать", " тридцать", " сорок", " пятьдесят", " шестьдесят", " семьдесят", " восемьдесят", " девяносто"]; private static const HUND_ARRAY :Array = ["", " сто", " двести", " триста", " четыреста", " пятьсот", " шестьсот", " семьсот", " восемьсот", " девятьсот"]; private static const ORDER_ARRAY :Array = ["", " тысяч", " миллион", " миллиард"]; public static function convertToRussianText(num:Number):String { var resultString:String = ""; var resultArray:Array = ["", "", "", ""]; var minus:String = ""; if (num < -999999999999) return "ОШИБКА : число меньше -999999999999"; if (num > 999999999999) return "ОШИБКА : число больше 999999999999"; if (num < 0) { minus = "минус "; num *= -1 } if (num == 0) return "ноль"; var numParts:Array = new Array(); var i:Number = num; var d:Number = 0; var order:Number = 0; while (i >= 1) { d = i; i = Math.floor(i / 1000); numParts[order] = d - i * 1000; order++; } for(var g:Number=0; g<order; g++) { var hundredString:String = ""; var decimalString:String = ""; var numSuffix:String = ""; var strSuffix:String = ""; var temp:Number = numParts[g]; //// var hundred:Number = Math.floor(temp/100); if (hundred) { temp -= hundred*100; hundredString = HUND_ARRAY[hundred]; } var decimal:Number = Math.floor(temp/10); if (decimal>1) { temp -= decimal*10; decimalString = TEEN_ARRAY[decimal-2]; } //// cуффикс числа (для 1 и 2) if (temp == 1 && g != 1) numSuffix = "ин"; // "од^ИН миллион" if (temp == 1 && g == 1) numSuffix = "на"; // "од^НА тысяча" if (temp == 2 && g != 1) numSuffix = "а"; // "дв^А миллиона" if (temp == 2 && g == 1) numSuffix = "е"; // "дв^Е тысячи" //// суффикс строки порядка if (g == 1 && temp == 1) strSuffix = "а"; // "1 тысяч^А" if (g == 1 && temp > 1 && temp < 5) strSuffix = "и"; // "2-4 тысяч^И" if (g > 1 && temp > 1 && temp < 5) strSuffix = "а"; // "2-4 миллион^А - миллиард^А" if (g > 1 && temp > 4) strSuffix = "ов"; // "5-9 миллион^ОВ - миллиард^ОВ" if (g > 1 && temp == 0) strSuffix = "ов"; // "20-100-900 миллион^ОВ - миллиард^ОВ" resultArray[g] = hundredString + decimalString + UNIT_ARRAY[temp] + numSuffix + (numParts[g] == 0 ? "" : ORDER_ARRAY[g] + strSuffix); } var rcString:String = resultArray[3] + resultArray[2] + resultArray[1] + resultArray[0]; resultString = rcString.substr(0,1) == " " ? rcString.substring(1) : rcString; return (minus + resultString); } } }
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: May 2009
Сообщений: 30
|
Цитата:
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|