Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как перевести Числа в текст (сумму прописью) / 21 сообщений из 21, страница 1 из 1
07.11.2006, 13:49
    #34109057
dremmmmm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
Возникла задача передодить из Int в "прописью", типа 21 в "двадцать один", кто нибуть знает, есть "стандартные средства"?
...
Рейтинг: 0 / 0
07.11.2006, 14:49
    #34109236
HiddenDragon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
вроде нету стандартной... тем более по русски
напиши статик касс где реализуешь вывод строки
...
Рейтинг: 0 / 0
07.11.2006, 15:06
    #34109309
dremmmmm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
Лень делать ;-), 100 пудов уже ктото писал какую штуку, модет суда код кинет.
...
Рейтинг: 0 / 0
07.11.2006, 17:34
    #34109937
alexpogorelov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
в какой-то из конф на сервере было
но кажется не в ява там еще помнится склонения и пр вариации рассматривали
че та мне кажется в mssql это было... но могу ошибаться
...
Рейтинг: 0 / 0
07.11.2006, 17:53
    #34110016
dremmmmm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
уже сам сделал
...
Рейтинг: 0 / 0
07.11.2006, 17:54
    #34110018
LongS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
В ветке mssql точно было. Еще в статьях для mssql на этом сайте есть.
Так-же можно найти для Excel VBA.
...
Рейтинг: 0 / 0
07.11.2006, 17:57
    #34110026
Йогурт
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
dremmmmmуже сам сделал

кидай сюда код
...
Рейтинг: 0 / 0
07.11.2006, 17:57
    #34110028
dremmmmm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
Та-таааааа

import java.lang.reflect.Field;

public class IntInText {
public final static String x1="один";
public final static String xx1="одина";

public final static String x2="два";
public final static String xx2="две";


public final static String x3="три";
public final static String x4="четыре";
public final static String x5="пять";
public final static String x6="шесть";
public final static String x7="семь";
public final static String x8="восемь";
public final static String x9="девять";
public final static String x10="десять";

public final static String x11="одинадцать";
public final static String x12="двенадцать";
public final static String x13="тринадцать";
public final static String x14="четырнадцать";
public final static String x15="пятнадцать";
public final static String x16="шеснадцать";
public final static String x17="сернадцать";
public final static String x18="восемнадцать";
public final static String x19="девятнадцать";

public final static String x20="двадцать";
public final static String x30="тридцать";
public final static String x40="сорок";
public final static String x50="пятдесят";
public final static String x60="шесдесят";
public final static String x70="семдесят";
public final static String x80="восемдесят";
public final static String x90="девяноста";

public final static String x100="сто";
public final static String x200="двести";
public final static String x300="триста";
public final static String x400="четыреста";
public final static String x500="пятсот";
public final static String x600="шестсот";
public final static String x700="семсот";
public final static String x800="восемсот";
public final static String x900="девятсот";

public final static String x1000="тысяча";
public final static String xx1000="тысячи";
public final static String xхx1000="тысяч";



public static String convert(int x){
String no=String.valueOf(x);
String res="";
Field fild;
try{
Class clas = IntInText.class;

if(no.charAt(no.length()-1)!='0'){
fild = IntInText.class.getField("x"+no.charAt(no.length()-1));
res=" "+fild.get(clas).toString();
}

if(no.length()-2>-1 && no.charAt(no.length()-2)=='1'){
fild = IntInText.class.getField("x1"+no.charAt(no.length()-1));
res=" "+fild.get(clas).toString();
}

if(x>19 && no.charAt(no.length()-1)=='0'){
fild = IntInText.class.getField("x"+no.charAt(no.length()-2)+"0");
res=" "+fild.get(clas).toString()+res;
}

if(x>99 && no.charAt(no.length()-3)!='0'){
fild = IntInText.class.getField("x"+no.charAt(no.length()-3)+"00");
res=" "+fild.get(clas).toString()+res;
}


if(x>999 && no.length()-5==-1){
String isRes=no.charAt(no.length()-4)+"";

if(isRes.equals("1")){
fild = IntInText.class.getField("xx"+no.charAt(no.length()-4));
res=" "+fild.get(clas).toString()+" "+x1000+res;
}
if(isRes.equals("2")){
fild = IntInText.class.getField("xx"+no.charAt(no.length()-4));
res=" "+fild.get(clas).toString()+" "+xx1000+res;
}
if(isRes.equals("3")|| isRes.equals("4")){
fild = IntInText.class.getField("x"+no.charAt(no.length()-4));
res=" "+fild.get(clas).toString()+" "+xx1000+res;
}
if(no.charAt(no.length()-4)!='0' && !isRes.equals("1")&&!isRes.equals("2") && !isRes.equals("3") && !isRes.equals("4")){
fild = IntInText.class.getField("x"+no.charAt(no.length()-4));
res=" "+fild.get(clas).toString()+" "+xхx1000+res;
}
}



if(x>9999 && no.charAt(no.length()-5)=='1'){
fild = IntInText.class.getField("x1"+no.charAt(no.length()-4));
res=" "+fild.get(clas).toString()+" "+xхx1000+res;
}



if(x>19999){

fild = IntInText.class.getField("x"+no.charAt(no.length()-5)+"0");
if(no.charAt(no.length()-4)=='0')
res=" "+fild.get(clas).toString()+" "+xхx1000+res;
else
res=" "+fild.get(clas).toString()+res;

}

}catch(Exception e){
e.printStackTrace();
}

return res;
}

public static void main(String [] argm){
int x = 11112;
String text = convert(x);
System.out.println("text="+text);
}

}
...
Рейтинг: 0 / 0
07.11.2006, 17:58
    #34110035
dremmmmm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
Правда только до 99 999 переводит,
А мне больше и не надо (с)
...
Рейтинг: 0 / 0
07.11.2006, 18:00
    #34110046
dremmmmm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
fuck одина->одна, бета версия блин ;-)
...
Рейтинг: 0 / 0
07.11.2006, 18:29
    #34110136
dremmmmm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
есть еще пара мелких багов, исправляются за 2 минуты
...
Рейтинг: 0 / 0
08.11.2006, 08:47
    #34110830
fplab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
А здесь эта задача решается в общем виде: http://]fplab.h10.ru/digit2text.html. Т.е. с учетом рода: сравните "Один рубль", но "Одна гривна"
...
Рейтинг: 0 / 0
08.11.2006, 09:18
    #34110902
DIMA11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
Без обид, тока перед использованием грамматические ошибочки типа: пятдесят = пятЬдесят лучше поправить :)
...
Рейтинг: 0 / 0
08.11.2006, 10:05
    #34111054
dremmmmm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
Dima11Без обид, тока перед использованием грамматические ошибочки типа: пятдесят = пятЬдесят лучше поправить :)
Уже поправил ;-), не часто приходится числа прописью писать... :-(
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
04.08.2011, 18:08
    #37381171
flug3r
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
Написал решение на SQL. Может полезно кому будет.

Код: 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.
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.
DROP PROCEDURE IF EXISTS num_to_text_3r;
delimiter $$

#в качестве аргумента принимаеться целое число, либо число с одним или двумя знаками после запятой. разделители "," и "."
#напр.  12   12 . 99   12 , 90   12 , 9 
CREATE PROCEDURE num_to_text_3r(orignum VARCHAR( 128 ))
p_body:BEGIN

	DECLARE origlen INT( 11 ); 
	DECLARE iSot INT( 11 );
	DECLARE r INT( 11 );
	DECLARE i INT( 11 );
	DECLARE c1Sot VARCHAR( 32 );
	DECLARE c2Sot VARCHAR( 32 );
	DECLARE c3Sot VARCHAR( 32 );
	DECLARE rtext text;
	DECLARE esuff VARCHAR( 32 );

	#последние три цифры в числе считаються копейками, в случае отсутствия разделителя добавляем  000 
	IF locate('.',orignum)> 0  OR locate(',',orignum)> 0  THEN
		IF length(substring(orignum,locate('.',orignum)))= 2  OR length(substring(orignum,locate(',',orignum)))= 2 
		THEN
			SET orignum = replace(orignum,'.','0');
			SET orignum = replace(orignum,',','0');
			SET orignum = CONCAT(orignum,'0');
		ELSE	
			SET orignum = replace(orignum,'.','0');
			SET orignum = replace(orignum,',','0');
		END IF;
	ELSE
		SET orignum = concat(orignum,'000');
	END IF; 

	SET origlen = (SELECT length(orignum));
	SET r = round(origlen/ 3 + 0 . 3 );
	SET i =  0 ;
	SET rtext = ' ';
	SET esuff = ' ';

	WHILE (i<r) DO
		SET i = i+ 1 ;
		SET iSot = substring(LPAD(orignum,r* 3 ,'0'), -( 3 *i), 3 );
		#SELECT iSot,orignum;

		CASE substring(iSot,- 3 , 1 )
			WHEN  1  THEN SET c1Sot = 'сто';
			WHEN  2  THEN SET c1Sot = 'двести';
			WHEN  3  THEN SET c1Sot = 'триста';
			WHEN  4  THEN SET c1Sot = 'четыреста';
			WHEN  5  THEN SET c1Sot = 'пятьсот';
			WHEN  6  THEN SET c1Sot = 'шестьсот';
			WHEN  7  THEN SET c1Sot = 'семьсот';
			WHEN  8  THEN SET c1Sot = 'восемьсот';
			WHEN  9  THEN SET c1Sot = 'девятьсот';
			WHEN  0  THEN SET c1Sot = ' ';
		END CASE;

		IF i= 1  OR i= 3  THEN
			CASE substring(iSot,- 1 , 1 )
				WHEN  1  THEN SET c3Sot = 'одна';
				WHEN  2  THEN SET c3Sot = 'две';
				WHEN  3  THEN SET c3Sot = 'три';
				WHEN  4  THEN SET c3Sot = 'четыре';
				WHEN  5  THEN SET c3Sot = 'пять';
				WHEN  6  THEN SET c3Sot = 'шесть';
				WHEN  7  THEN SET c3Sot = 'семь';
				WHEN  8  THEN SET c3Sot = 'восемь';
				WHEN  9  THEN SET c3Sot = 'девять';
				WHEN  0  THEN SET c3Sot = ' ';
			END CASE;
		ELSE
			CASE substring(iSot,- 1 , 1 )
				WHEN  1  THEN SET c3Sot = 'один';
				WHEN  2  THEN SET c3Sot = 'два';
				WHEN  3  THEN SET c3Sot = 'три';
				WHEN  4  THEN SET c3Sot = 'четыре';
				WHEN  5  THEN SET c3Sot = 'пять';
				WHEN  6  THEN SET c3Sot = 'шесть';
				WHEN  7  THEN SET c3Sot = 'семь';
				WHEN  8  THEN SET c3Sot = 'восемь';
				WHEN  9  THEN SET c3Sot = 'девять';
				WHEN  0  THEN SET c3Sot = ' ';
			END CASE;
		END IF;
	
		CASE substring(iSot,- 2 , 1 )
			WHEN  1  THEN 
				BEGIN
					SET c2Sot = ' ';
					CASE substring(iSot,- 1 , 1 )
						WHEN  1  THEN SET c3Sot = 'одиннадцать';
						WHEN  2  THEN SET c3Sot = 'двенадцать';
						WHEN  3  THEN SET c3Sot = 'тринадцать';
						WHEN  4  THEN SET c3Sot = 'четырнадцать';
						WHEN  5  THEN SET c3Sot = 'пятнадцать';
						WHEN  6  THEN SET c3Sot = 'шестнадцать';
						WHEN  7  THEN SET c3Sot = 'семнадцать';
						WHEN  8  THEN SET c3Sot = 'восемнадцать';
						WHEN  9  THEN SET c3Sot = 'девятнадцать';
						WHEN  0  THEN SET c3Sot = 'десять';
					END CASE;
				END;
			WHEN  2  THEN SET c2Sot = 'двадцать';
			WHEN  3  THEN SET c2Sot = 'тридцать';
			WHEN  4  THEN SET c2Sot = 'сорок';
			WHEN  5  THEN SET c2Sot = 'пятьдесят';
			WHEN  6  THEN SET c2Sot = 'шестьдесят';
			WHEN  7  THEN SET c2Sot = 'семьдесят';
			WHEN  8  THEN SET c2Sot = 'восемьдесят';
			WHEN  9  THEN SET c2Sot = 'девяносто';
			WHEN  0  THEN SET c2Sot = ' ';
		END CASE;

		CASE i
			WHEN  1  THEN
				BEGIN
					IF substring(iSot,- 1 , 1 )= 1  THEN SET esuff='копейка'; END IF;
					IF substring(iSot,- 1 , 1 )> 1  THEN SET esuff='копейки'; END IF;
					IF substring(iSot,- 1 , 1 )> 4  THEN SET esuff='копеек'; END IF;
					IF substring(iSot,- 1 , 1 )= 0  THEN SET esuff='копеек'; END IF;
					IF substring(iSot,- 2 , 1 )= 1  THEN SET esuff='копеек'; END IF;
					IF substring(iSot,- 2 , 1 )= 0  AND substring(iSot,- 1 , 1 )= 0  THEN
						SET esuff='ноль копеек'; END IF;
					
				END;
			WHEN  2  THEN
				BEGIN
					IF substring(iSot,- 1 , 1 )= 1  THEN SET esuff='рубль'; END IF;
					IF substring(iSot,- 1 , 1 )> 1  THEN SET esuff='рубля'; END IF;
					IF substring(iSot,- 1 , 1 )> 4  THEN SET esuff='рублей'; END IF;
					IF substring(iSot,- 1 , 1 )= 0  THEN SET esuff='рублей'; END IF;
					IF substring(iSot,- 2 , 1 )= 1  THEN SET esuff='рублей'; END IF;
				END;
			WHEN  3  THEN
				BEGIN
					IF substring(iSot,- 1 , 1 )= 1  THEN SET esuff='тысяча'; END IF;
					IF substring(iSot,- 1 , 1 )> 1  THEN SET esuff='тысячи'; END IF;
					IF substring(iSot,- 1 , 1 )> 4  THEN SET esuff='тысяч'; END IF;
					IF substring(iSot,- 1 , 1 )= 0  THEN SET esuff='тысяч'; END IF;
					IF substring(iSot,- 2 , 1 )= 1  THEN SET esuff='тысяч'; END IF;
					IF substring(iSot,- 3 , 1 )= 0  AND substring(iSot,- 2 , 1 )= 0 
						AND substring(iSot,- 1 , 1 )= 0  THEN SET esuff=' '; END IF;
				END;
			WHEN  4  THEN
				BEGIN
					IF substring(iSot,- 1 , 1 )= 1  THEN SET esuff='миллион'; END IF;
					IF substring(iSot,- 1 , 1 )> 1  THEN SET esuff='миллиона'; END IF;
					IF substring(iSot,- 1 , 1 )> 4  THEN SET esuff='миллионов'; END IF;
					IF substring(iSot,- 1 , 1 )= 0  THEN SET esuff='миллионов'; END IF;
					IF substring(iSot,- 2 , 1 )= 1  THEN SET esuff='миллионов'; END IF;
					IF substring(iSot,- 3 , 1 )= 0  AND substring(iSot,- 2 , 1 )= 0 
						AND substring(iSot,- 1 , 1 )= 0  THEN SET esuff=' '; END IF;
				END;
			WHEN  5  THEN
				BEGIN
					IF substring(iSot,- 1 , 1 )= 1  THEN SET esuff='миллиард'; END IF;
					IF substring(iSot,- 1 , 1 )> 1  THEN SET esuff='миллиарда'; END IF;
					IF substring(iSot,- 1 , 1 )> 4  THEN SET esuff='миллиардов'; END IF;
					IF substring(iSot,- 1 , 1 )= 0  THEN SET esuff='миллиардов'; END IF;
					IF substring(iSot,- 2 , 1 )= 1  THEN SET esuff='миллиардов'; END IF;
					IF substring(iSot,- 3 , 1 )= 0  AND substring(iSot,- 2 , 1 )= 0 
						AND substring(iSot,- 1 , 1 )= 0  THEN SET esuff=' '; END IF;
				END;
			ELSE SET esuff='ERR:слишком большая сумма';
		END CASE;
		SET rtext = CONCAT(c1Sot,' ',c2Sot,' ',c3Sot,' ',esuff,' ',rtext);
	END WHILE;
	SET rtext = REPLACE(REPLACE(REPLACE(REPLACE(LTRIM(rtext),'  ',' '),'  ',' '),'  ',' '),'  ',' ');
	IF locate('рубл',rtext)= 1  THEN SET rtext=concat('ноль ',rtext); END IF;
	SELECT rtext;

END;$$
delimiter ;
...
Рейтинг: 0 / 0
05.08.2011, 16:18
    #37382735
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
Вы бы хоть сервер озвучили, на котором будет работать ваш замечательный код.
А то, знаете ли, Firebird и IBExpert - совсем не тоже самое, что Firebird и isql. Как пример.
...
Рейтинг: 0 / 0
05.08.2011, 16:29
    #37382759
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
Basil A. SidorovВы бы хоть сервер озвучили, на котором будет работать ваш замечательный код.
А то, знаете ли, Firebird и IBExpert - совсем не тоже самое, что Firebird и isql. Как пример.
Я тоже такое как-то писал на SQL (MS SQL).
ПС. В данном случае, действительно, не понятно, что за сервер. В MS SQL переменные начинаются с "собаки".
...
Рейтинг: 0 / 0
05.08.2011, 17:35
    #37382855
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
Ура! 5 лет не ел, не спал - ждал, когда же алгоритм придумают и опубликуют. Наконец-то! Ай да умница!

P.S. Таких некропостеров видеть еще не приходилось. Прям геронтофил какой-то ...
...
Рейтинг: 0 / 0
05.08.2011, 18:57
    #37382970
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
Еще и на PLSQL...

С новым годом, друзья!
...
Рейтинг: 0 / 0
08.08.2011, 12:10
    #37384966
flug3r
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
IDVsbruckУра! 5 лет не ел, не спал - ждал, когда же алгоритм придумают и опубликуют. Наконец-то! Ай да умница!

P.S. Таких некропостеров видеть еще не приходилось. Прям геронтофил какой-то ...

google привел именно в эту тему, поэтому тут и отписал. даты видел.
процедура для MySQL
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
07.01.2017, 14:04
    #39380300
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести Числа в текст (сумму прописью)
Сумма прописью для русского, украинского и английского языков.

https://github.com/javadev/moneytostr-russian

С уважением, Валентин
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как перевести Числа в текст (сумму прописью) / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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