|
|
|
| Можно ли найти такой скрипт, смысл следующий:
в результате расчётов получаем, к примеру 23456, а нужно вывести его строкой:
Двадцать три тысячи четыреста пятьдесят шесть рублей.
??? | |
|
|
|
|
|
|
|
для: coloboc66
(20.12.2010 в 11:48)
| | Найти - вряд ли.
Сделать самому - элементарно. | |
|
|
|
|
|
|
|
для: АЯ
(20.12.2010 в 12:01)
| | Ого - элементарно... Там же все окончания должны быть грамматически правильными!!! Я согласен, что на английском элементарно, но на русском... | |
|
|
|
|
|
|
|
для: coloboc66
(20.12.2010 в 12:05)
| | На удивление, не так уж и много вариантов. | |
|
|
|
|
|
|
|
для: coloboc66
(20.12.2010 в 12:05)
| |
<script>
//для натурального числа от 1 до 999999
function NumToWords (q) {function N3tW (s, d) {function Ms0 (f)
{while (f.charAt (0) == '0' && f.length > 1) f = f.substr (1); return f}
var N = new Array (), g00, g0, g2, h = ''; N [0] = '';
N [1] = 'один'; N [11] = 'одиннадцать'; N [10] = 'десять'; N [100] = 'сто';
N [2] = 'два'; N [12] = 'двенадцать'; N [20] = 'двадцать'; N [200] = 'двести';
N [3] = 'три'; N [13] = 'тринадцать'; N [30] = 'тридцать'; N [300] = 'триста';
N [4] = 'четыре'; N [14] = 'четырнадцать'; N [40] = 'сорок'; N [400] = 'четыреста';
N [5] = 'пять'; N [15] = 'пятнадцать'; N [50] = 'пятьдесят'; N [500] = 'пятьсот';
N [6] = 'шесть'; N [18] = 'шестнадцать'; N [60] = 'шестьдесят'; N [600] = 'шестьсот';
N [7] = 'семь'; N [17] = 'семнадцать'; N [70] = 'семьдесят'; N [700] = 'семьсот';
N [8] = 'восемь'; N [18] = 'восемнадцать'; N [80] = 'восемьдесят'; N [800] = 'восемьсот';
N [9] = 'девять'; N [19] = 'девятнадцать'; N [90] = 'девяносто'; N [900] = 'девятьсот';
if (d) {N [1] = 'одна'; N [2] = 'две'}
var g = Ms0 (s);
if (g.length == 1) h += N [g]
if (g.length == 2) if (N [g]) h += N [g]; else {g0 = g.charAt (0) + '0'; h += N [g0] + ' ' + N [g.charAt (1)]}
if (g.length == 3) if (N [g]) h += N [g]; else {
g00 = g.charAt (0) + '00'; h += N [g00]; g2 = Ms0 (g.substr (1)); if (N [g2]) h += ' ' + N [g2];
else {g0 = g2.charAt (0) + '0'; h += ' ' + N [g0] + ' ' + N [g2.charAt (1)]}}
var w = g.split ('');
if (d) {var z = ['', 'а', 'и', 'и', 'и', '', '', '', '', ''];
h += ' тысяч'; if (!(g > 9 && g < 21) && !(g.substr (1) > 9 && g.substr (1) < 21)) h += z [w [w.length - 1]]}
else {var z = ['ей', 'ь', 'я', 'я', 'я', 'ей', 'ей', 'ей', 'ей', 'ей'];
h += ' рубл'; if ((g > 9 && g < 21) || (g.substr (1) > 9 && g.substr (1) < 21)) h += 'ей'; else h += z [w [w.length - 1]]}
return h;
}
var w = (q + '').split (''), r = t = ''; while (w.length)
{var i = w.pop (); if (r.length < 3) r = i + '' + r; else t = i + '' + t}
return (((t) ? N3tW (t, 1) : '') + ' ' + N3tW (r, 0)).replace (/ /g, ' ');
}
alert (NumToWords (23456));
</script>
|
| |
|
|
|
|
|
|
|
для: АЯ
(20.12.2010 в 22:34)
| | Спасибо!
Ещё не помешал бы скрипт даты прописью:) | |
|
|
|
|
|
|
|
|
для: coloboc66
(20.12.2010 в 11:48)
| | Найти в сети элементарно, да и на форуме в разделе РНР таких примеров было не один, а уж из РНР в JS переписать труда не составит. | |
|
|
|
|
|
|
|
для: coloboc66
(20.12.2010 в 11:48)
| | [поправлено модератором] | |
|
|
|