Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Javascript: как перевести число в текст / 7 сообщений из 7, страница 1 из 1
07.06.2007, 12:39
    #34580643
guest321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Javascript: как перевести число в текст
Задача: 12345 -> двенадцать тысяч триста сорок пять рублей

Пожалуйста, скиньте ссылку на скрипт
...
Рейтинг: 0 / 0
07.06.2007, 12:56
    #34580716
Alex_BBB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Javascript: как перевести число в текст
например так

var a = 12345; //число
var str = '' + a; //строка
...
Рейтинг: 0 / 0
07.06.2007, 13:00
    #34580735
guest321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Javascript: как перевести число в текст
авторvar a = 12345; //число
var str = '' + a; //строка
Спасибо, но нужно перевести число в слова
...
Рейтинг: 0 / 0
07.06.2007, 13:04
    #34580756
Alex_BBB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Javascript: как перевести число в текст
guest321
Спасибо, но нужно перевести число в слова
А-а-а, сначала не понял вопроса.
...
Рейтинг: 0 / 0
08.06.2007, 14:46
    #34584197
Javascript: как перевести число в текст
может, не хватает каких-нибудь функций.

Код: plaintext
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.
// Перевод цифр в строки
function wIndex(ar,v) { for(var i= 0 ;i<ar.length;i++) if(ar[i]==v) return i; return - 1 ;}
function wIMV(ar,v) { for(var i= 0 ;i<ar.length;i++) if(ar[i]>=v) return i; return i- 1 ;}

function wDigitsInWords(dgt)
{
	var a	="надцать;";var b="надцать";var c="ьдесят;";
	var a1		="ноль;один;два;три;четыре;пять;шесть;семь;восемь;девять".split(";");
	var a10		=("один"+a+"две"+a+"три"+a+"четыр"+a+"пят"+a+"шест"+a+"сем"+a+"восем"+a+"девят"+b).split(";");
	var a11		=("десять;двадцать;тридцать;сорок;пят"+c+"шест"+c+"сем"+c+"восем"+c+"девяносто").split(";");
	var a100		="сто;двести;триста;четыреста;пятьсот;шестьсот;семьсот;восемьсот;девятьсот".split(";");
	var aT		="тысяча;тысячи;тысяч".split(";");
	var iT		= new Array( 1 , 4 , 5 );
	var aM		="миллион;миллиона;миллионов".split(";");
	var iM		= new Array( 1 , 4 , 5 );
	var aB		="миллиард;миллиарда;миллиардов".split(";");
	var iB		= new Array( 1 , 4 , 5 );
	var aQ		="триллион;триллиона;триллионов".split(";");
	var iQ		= new Array( 1 , 4 , 5 );
	var str=dgt.toString().split(".")[ 0 ];var res="";var z=str.length;var j= 0 ;var i1= 0 ;var i2= 0 ;var i3= 0 ;var i4= 0 ;var nxt="";var rst="";s=" ";
	if(z== 0 ) return "ноль";
	for(var i= 0 ;i<z;i=i+ 3 )
	{
		nxt=((z<i+ 3 )?"":str.charAt(z-i- 3 ))+((z<i+ 2 )?"":str.charAt(z-i- 2 ))+((z<i+ 1 )?"ошибка":str.charAt(z-i- 1 ));
		j=nxt.length;
		if(j== 1 ) { rst=a1[parseInt(nxt)];i4=parseInt(nxt); } else
		{	
			i2=parseInt(nxt.charAt(j- 2 ));i1=parseInt(nxt.charAt(j- 1 ));
			if(i2==	 0 ) if(i1!=		 0 ) rst=a1[i1];
			if(i2==	 1 ) if(i1==	 0 ) rst=a11[i2- 1 ];else rst=a10[i1- 1 ];
			if(i2>		 1 ){if(i1==	 0 ) rst=a11[i2- 1 ];else rst=a11[i2- 1 ]+s+a1[i1];}
			if(j> 2 )
			{
				i3=parseInt(nxt.charAt(j- 3 ));
				if(i3!= 0 ) rst=a100[i3- 1 ]+s+rst;
			}
			if(i2== 1  && i1!= 0 ) i4=parseInt(i2.toString()+i1.toString());else i4=i1;
		}
		res=	rst+s+	((i== 12 	)?aQ	[wIMV(iQ	,i4)]:
							((i== 9 	)?aB	[wIMV(iB	,i4)]:
							((i== 6 	)?aM	[wIMV(iM	,i4)]:
							((i== 3 	)?aT	[wIMV(iT	,i4)]:""))))+((i< 3 )?"":s)+res;
	}
	//**********
	a1=res.split("один тысяча");
	if(a1.length== 2 ) res=a1[ 0 ]+"одна тысяча"+a1[ 1 ];
	//**********
	return res;
}
// Слова после цифр
function wWordToDigits(dgtA,prfx,sfx1,sfx2,sfx3)
{
		var dgt=parseInt(dgtA.toString().split(".")[ 0 ]);
		if(dgt== 0 ) 				return prfx+sfx3;
		var str=dgt.toString();
		if(str.length>= 2 ) if(str.charAt(str.length- 2 )=="1")
									return prfx+sfx3;
		var i=parseInt(str.charAt(str.length- 1 ));
		if(i== 1 ) 					return prfx+sfx1;
		if(i> 1  && i< 5 ) 			return prfx+sfx2;
									return prfx+sfx3;
}
// Пропись в документ суммы строкой.
function writeSumInString(tCall, aSum, aCur, aDiv)
{
	var mCur="";
	if(aCur==parseInt(aCur)) var vCur=aCur;else{ //  vCur= 1  ..   6  \\
		var vCur=aCur.split(".");if(parseInt(vCur[ 0 ])<= 0  || parseInt(vCur[ 0 ])>= 7 ) return aSum;
		
		if(vCur.length> 1 ) mCur=vCur[ 1 ]; // aCur = [ 1 -> 6 ].[absolute, red, redabsolute, red{R/S/F/A}brackets ... ] <- mCur - отриц.суммы
		vCur=parseInt(vCur[ 0 ]);
	}	
	var sum=removeDgtsDelims(aSum);
	var ngtv=((sum< 0 )?true:false);sum=((ngtv)?-sum:sum);var rub=Math.floor(sum); var kop=Math.floor((sum-rub)* 100 );

	if(vCur== 1 ) {
		var str=wDigitsInWords(rub)+" "+wWordToDigits(rub,cur0,cur1,cur2,cur3)+" ";
		var str=str+((kop.toString().length< 2 )?"0":"")+kop+" "+wWordToDigits(kop,cnt0,cnt1,cnt2,cnt3);
	} else if(vCur== 2 ) {
		var str=wDigitsInWords(rub)+" "+cur4+" "+((kop.toString().length< 2 )?"0":"")+kop+" "+cnt4;
	} else if(vCur== 3 ) {
		var str=wDigitsInWords(rub)+" "+wWordToDigits(rub,cur0,cur1,cur2,cur3);
	} else if(vCur== 4 ) { var str=wDigitsInWords(rub)+" "+cur4; 
	} else if(vCur== 5 ) { var str=wDigitsInWords(rub); 
	} else if(vCur== 6 ) { var str=wDigitsInWords(kop); }
	
	if(ngtv) { if(mCur=="") str="минус "+str; if(mCur=="absolute") str=str; else if(mCur.indexOf("red")== 0 ) {
var lft=	((mCur=="redRbrackets")?"(":((mCur=="redSbrackets")?"[":((mCur=="redFbrackets")?"{":((mCur=="redAbrackets")?"<":""))));
var rt=	((mCur=="redRbrackets")?")":((mCur=="redSbrackets")?"]":((mCur=="redFbrackets")?"}":((mCur=="redAbrackets")?">":""))));
			str="<font style='color:red;'>"+((mCur=="red")?"минус ":"")+lft+str+rt+"</font>";
		}
	}
	
	if(tCall== 2  && !isDefined(col[aDiv]) ) { alert("error");return false; }
	
	if(tCall== 2 ) col[aDiv].innerHTML=str;else if(tCall== 1 ) document.write(str);else return str;
}
...
Рейтинг: 0 / 0
08.06.2007, 14:53
    #34584224
Javascript: как перевести число в текст
по-моему не хватает....
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
/* ********************** Удаление разделителей для получения корректных значений чисел. **********************   */
function removeDgtsDelims(aSum)
{
	var src=trim(aSum.toString());var res="";var dgts="0123456789.,";
	for(var i= 0 ;i<src.length;i++) res=res+((dgts.indexOf(src.charAt(i))==- 1 )?"":src.charAt(i));
	res=replaceSubStr(res,",",".");
	var ar=res.split(".");
	if( ar.length> 1  ) { res="";for(var i= 0 ;i<ar.length- 1 ;i++) res=res+ar[i];res=res+"."+ar[ar.length- 1 ]; }
	return ((src.charAt( 0 )=="-")?- 1 : 1 )*parseFloat(res);
}
...
Рейтинг: 0 / 0
08.06.2007, 15:31
    #34584383
guest321
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Javascript: как перевести число в текст
Большое спасибо когда-то работало , но пришлось написать самому
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Javascript: как перевести число в текст / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]