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

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

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

Код: 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
Javascript: как перевести число в текст
    #34584224
по-моему не хватает....
Код: 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
Javascript: как перевести число в текст
    #34584383
guest321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо когда-то работало , но пришлось написать самому
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Javascript: как перевести число в текст
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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