01 |
Очень часто возникает необходимость получить число или сумму, выраженную в какой-либо денежной единице прописью. Например из 1 253 458.76 руб. получить Один миллион двести пятьдесят три тысячи четыреста пятьдесят восемь рублей 76 копеек, или из 0.02485 получить ноль целых две тысячи четыреста восемьдесят пять стотысячных. |
|
02 |
Вопреки традиции начну с конца — вместе с вариантами использования покажу возможности: |
|
03 | VB.NET |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 'Сумма прописью в рублях
Console.WriteLine(СуммаПрописьюВРублях(4582154.25))
'четыре миллиона пятьсот восемьдесят две тысячи сто пятьдесят четыре рубля 25 копеек
'Сумма прописью в евро
Console.WriteLine(СуммаПрописьюВЕвро(34654.04))
'тридцать четыре тысячи шестьсот пятьдесят четыре евро 4 цента
'Сумма прописью в долларах
Console.WriteLine(СуммаПрописьюВДолларах(39531.85))
'тридцать девять тысяч пятьсот тридцать один доллар 85 центов
'Сумма в произвольной валюте - турецких лирах
Console.WriteLine(СуммаПрописью(23645.2, "ж|лира|лиры|лир", "м|куруш|куруша|курушей"))
'двадцать три тысячи шестьсот сорок пять лир 20 курушей
'Сумма прописью в рублях, если копеек нет, то не выводим
Console.WriteLine(СуммаПрописью(4582, "м|рубль|рубля|рублей", "ж|копейка|копейки|копеек", , False))
'четыре тысячи пятьсот восемьдесят два рубля
'Сумма прописью в рублях, копейки тоже прописью
Console.WriteLine(СуммаПрописью(68463.54, "м|рубль|рубля|рублей", "ж|копейка|копейки|копеек", , , False))
'шестьдесят восемь тысяч четыреста шестьдесят три рубля пятьдесят четыре копейки
'Любые количества чего угодно
Console.WriteLine(СуммаПрописью(4582, "м|ящик|ящика|ящиков", "", , False))
'четыре тысячи пятьсот восемьдесят два ящика
'Любые количества чего угодно
Console.WriteLine(ЧислоПрописью(49.45, 2) + " процента")
'сорок девять целых сорок пять сотых процента
'Число прописью с 2-мя десятичными
Console.WriteLine(ЧислоПрописью(4582.85245, 2))
'четыре тысячи пятьсот восемьдесят две целых восемьдесят пять сотых
'Число прописью без целых
Console.WriteLine(ЧислоПрописью(0.85245, 5))
'ноль целых восемьдесят пять тысяч двести сорок пять стотысячных |
|
04 |
Ну а теперь сами функции СуммаПрописью и ЧислоПрописью с комментариями в коде: |
|
05 | VB.NET |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 #Region "СуммаПрописью" ... 'СуммаПрописью(1254.5, "м|рубль|рубля|рублей","ж|копейка|копейки|копеек") ... Public Function СуммаПрописьюВРублях(sum As Decimal) As String ... Public Function СуммаПрописьюВДолларах(sum As Decimal) As String ... Public Function СуммаПрописьюВЕвро(sum As Decimal) As String ... Public Function СуммаПрописью( sum As Decimal, intvalue As String, decvalue As String, Optional showIntIfNull As Boolean = True, Optional showDecIfNull As Boolean = True, Optional decToWord As Boolean = False ) As String ... Public Function ЧислоПрописью( sum As Decimal, Optional countDecDigit As Integer = 0, Optional showIntIfNull As Boolean = True, Optional showDecIfNull As Boolean = True, Optional decToWord As Boolean = True ) As String ... Public Function ПолучитьМассивТроек(sum As Decimal) As Integer() ... Private Function ПолучитьСтрокуТройкиСПорядком(sum As Integer, period As Integer, rod As String) As String ... Private Function ПолучитьИндексПадежа(lastDigit As Integer, prevDigit As Integer) As Integer ... Public Function ПолучитьИндексПадежаПоЧислу(sum As Decimal) As Integer ... Private Function ПолучитьЧислоПрописью(sum As Decimal, rod As String) As String ... Private Function ПолучитьЧислоПрописьюСВалютой(sum As Decimal, curValues_ As String) As String ... Private Function ПолучитьПадежВалюты(sum As Decimal, curValues_ As String) As String ... |
|
06 |
Кстати, перевод чисел и сумм прописью на разные языки оставлю в качестве домашнего задания. Думаю, не составит труда переименовать константы и изменить, в случае необходимости, падежи. |
|
07 |
Похожие запросы:
|
|