Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Цифры и буквы Добавлено: 14.11.02 21:41  

Автор вопроса:  ANARCHY | Web-сайт: www.ishine.h1.ru
Как написать число прописью?

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 LIS



Вопросов: 7
Ответов: 256
 Профиль | | #1 Добавлено: 14.11.02 22:23

Check forum, I saw program...

Good luck

If you need English ---> ASK me , I have code... 

Ответить

Номер ответа: 2
Автор ответа:
 Иван



Администратор

ICQ: 147688925 

Вопросов: 24
Ответов: 708
 Web-сайт: www.vbnet.ru
 Профиль | | #2
Добавлено: 14.11.02 23:52

'Преобразование цены nMod в сумму прописью
'Работает при nMod<=2 147 483 647
'Код для рублей
Function Translate(nMon) As String
Dim aGen
Dim nCurSum, nCurRest, k

    aGen = Array("М", "Ж", "М", "М")
    Translate = ""
    On Error Resume Next
    nCurSum = CLng(nMon - 0.49)
    If Err.Number <> 0 Then
        Translate = Trim(nMon)
        Exit Function
    End If
    For k = 1 To 4
        If k > 1 Then nCurSum = (nCurSum - nCurRest) / 1000
        nCurSum = CLng(nCurSum - 0.49)
        If nCurSum = 0 Then Exit For
        nCurRest = nCurSum Mod 1000
        Translate = Money_Word(aGen(k - 1), k, nCurSum, True) & Translate
    Next
    nCurSum = CLng((nMon - CLng(nMon - 0.49)) * 100)
    Translate = Translate & Right(Left("0" & nCurSum, 3), 2) & " " & Money_Word("Ж", 0, nCurSum, False)
End Function

'Вывод словесной формы числа
'cGen - род (М-мужской,Ж-женский,С-средний)
'k - порядок (группа в aOrd)
'nCurSum - число для преобразования
'bWord - True-выводить весь текст, False-выводить только размерность
Function Money_Word(cGen, k, nCurSum, bWord)
Dim nSum, nRest, nCurRest
Dim aOrd, aDigits, aTens, aHundreds
    aOrd = Array("копейка", "копейки", "копеек" _
    , "рубль", "ру[sensored]", "рублей" _
    , "тысяча", "тысячи", "тысяч" _
    , "миллион", "миллиона", "миллионов" _
    , "миллиард", "миллиарда", "миллиардов")
    aDigits = Array("", "", "три", "четыре", "пять", "шесть", "семь", "восемь" _
    , "девять", "десять", "одиннадцать", "двенадцать", "тринадцать" _
    , "четырнадцать", "пятнадцать", "шестнадцать", "семнадцать" _
    , "восемнадцать", "девятнадцать")
    aTens = Array("десять", "двадцать", "тридцать", "сорок", "пятьдесят" _
    , "шестьдесят", "семьдесят", "восемьдесят", "девяносто")
    aHundreds = Array("сто", "двести", "триста", "четыреста", "пятьсот" _
    , "шестьсот", "семьсот", "восемьсот", "девятьсот")
    Money_Word = ""
    If cGen = "М" Then
        aDigits(0) = "один"
        aDigits(1) = "два"
    ElseIf cGen = "Ж" Then
        aDigits(0) = "одна"
        aDigits(1) = "две"
    ElseIf cGen = "С" Then
        aDigits(0) = "одно"
        aDigits(1) = "два"
    End If
    nRest = nCurSum Mod 10
    nSum = nCurSum Mod 100
    If nSum > 10 And nSum < 20 Then
        Money_Word = aOrd(k * 3 + 2) & " " & Money_Word
    ElseIf nRest = 1 Then
        Money_Word = aOrd(k * 3 + 0) & " " & Money_Word
    ElseIf nRest > 1 And nRest < 5 Then
        Money_Word = aOrd(k * 3 + 1) & " " & Money_Word
    Else
        Money_Word = aOrd(k * 3 + 2) & " " & Money_Word
    End If
    If bWord = False Then Exit Function
    nSum = nCurSum Mod 1000
    nRest = nSum Mod 100
    If nRest > 19 Then
        nRest = nRest Mod 10
        If nRest > 0 Then Money_Word = aDigits(nRest - 1) & " " & Money_Word
        nRest = ((nSum Mod 100) - nRest) / 10
        Money_Word = aTens(nRest - 1) & " " & Money_Word
    ElseIf nRest > 0 Then
        Money_Word = aDigits(nRest - 1) & " " & Money_Word
    End If
    nSum = (nSum - (nSum Mod 100)) / 100
    If nSum > 0 Then Money_Word = aHundreds(nSum - 1) & " " & Money_Word
End Function

Ответить

Номер ответа: 3
Автор ответа:
 Padre



ICQ: 346632205 

Вопросов: 25
Ответов: 215
 Web-сайт: localhost
 Профиль | | #3
Добавлено: 17.08.04 20:32
как тут исправит багу готорая начинается с миллиона и выше. Пишешь 1000000, а он переводит /один миллион тысяч рублей/?

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам