YuS 2
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору iNNOKENTIY21 Цитата: ну, тот скрипт с озона, более вменяем, имхо, да и проще в редактировании. Если число разрядов надо больше, чем 99 млн., то просто добавить их по аналогии... Типа: Код: # http://forum.oszone.net/post-2500293.html#post2500293 # увеличен предел (до 999 999 999) Function Amount { param ($Argument) $Arg1 = @("", "один ", "два ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ") $Arg2 = @("", "десять ", "двадцать ", "тридцать ", "сорок ", "пятьдесят ", "шестьдесят ", "семьдесят ", "восемьдесят ", "девяносто ") $Arg3 = @("", "сто ", "двести ", "триста ", "четыреста ", "пятьсот ", "шестьсот ", "семьсот ", "восемьсот ", "девятьсот ") $Arg4 = @("", "одна ", "две ", "три ", "четыре ", "пять ", "шесть ", "семь ", "восемь ", "девять ") $Arg5 = @("десять ", "одиннадцать ", "двенадцать ", "тринадцать ", "четырнадцать ", "пятнадцать ", "шестнадцать ", "семнадцать ", "восемнадцать ", "девятнадцать ") If ($Argument -le 0) { "ноль" break } $Units = Levels -Number $Argument -Degree 1 $Dozen = Levels -Number $Argument -Degree 2 $Hundred = Levels -Number $Argument -Degree 3 $Thousand = Levels -Number $Argument -Degree 4 $Dozen_Thousand = Levels -Number $Argument -Degree 5 $Hundred_Thousand = Levels -Number $Argument -Degree 6 $millions = Levels -Number $Argument -Degree 7 $Dozen_Millions = Levels -Number $Argument -Degree 8 $Hundred_Millions = Levels -Number $Argument -Degree 9 switch -Regex ($millions) { 1 {$millions_text = $Arg1[$millions] + "миллион "} "[2-4]" {$millions_text = $Arg1[$millions] + "миллиона "} "[5-9]" {$millions_text = $Arg1[$millions] + "миллионов "} } switch -Regex ($Dozen_Millions) { 1 {$millions_text = $Arg5[$millions] + "миллионов "; break} "[2-9]" {$Dozen_Millions_text = $Arg2[$Dozen_Millions]} } switch -regex($Thousand){ 0 { If ($Dozen_Thousand -gt 0) { $Thousand_text = $Arg4[$Thousand] + "тысяч "}} 1 {$Thousand_text = $Arg4[$Thousand] + "тысяча "} "[2-4]" {$Thousand_text = $Arg4[$Thousand] + "тысячи "} "[5-9]" {$Thousand_text = $Arg4[$Thousand] + "тысяч "} } switch -Regex ($Dozen_Thousand){ 1 {$Thousand_text = $Arg5[$Thousand] + "тысяч "; break} "[2-9]" {$Dozen_Thousand_text = $Arg2[$Dozen_Thousand]} } $Hundred_Thousand_text = $Arg3[$Hundred_Thousand] If (($Dozen_Thousand -eq 0) -And ($Thousand -eq 0) -And ($Hundred_Thousand -gt 0)) { #"тысяч" $Hundred_Thousand_text = $Hundred_Thousand_text + "тысяч " } $Hundred_Millions_text = $Arg3[$Hundred_Millions] If (($Dozen_Millions -eq 0) -And ($Millions -eq 0) -And ($Hundred_Millions -gt 0)) { #"миллионов" $Hundred_Millions_text = $Hundred_Millions_text + "миллионов " } $Units_text = $Arg1[$Units] switch -Regex ($Dozen){ 1 {$Units_text = $Arg5[$Units]} "[2-9]" {$Dozen_text = $Arg2[$Dozen]} } $Hundred_text = $Arg3[$Hundred] $Amount = $Hundred_Millions_text + $Dozen_Millions_text + $millions_text + $Hundred_Thousand_text + ` $Dozen_Thousand_text + $Thousand_text + $Hundred_text + $Dozen_text + $Units_text $Amount } Function Levels { param ($Number, $Degree) [Math]::Floor([Math]::Floor( $Number - ([Math]::Pow(10,$Degree)) * ([Math]::Floor($Number / ([Math]::Pow(10,$Degree)))) ) / ([Math]::Pow(10,$Degree-1))) } |
| Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 20:08 11-11-2020 | Исправлено: YuS 2, 21:48 13-11-2020 |
|