powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как перевести Числа в текст (сумму прописью)
21 сообщений из 21, страница 1 из 1
Как перевести Числа в текст (сумму прописью)
    #34109057
dremmmmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла задача передодить из Int в "прописью", типа 21 в "двадцать один", кто нибуть знает, есть "стандартные средства"?
...
Рейтинг: 0 / 0
Как перевести Числа в текст (сумму прописью)
    #34109236
HiddenDragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вроде нету стандартной... тем более по русски
напиши статик касс где реализуешь вывод строки
...
Рейтинг: 0 / 0
Как перевести Числа в текст (сумму прописью)
    #34109309
dremmmmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лень делать ;-), 100 пудов уже ктото писал какую штуку, модет суда код кинет.
...
Рейтинг: 0 / 0
Как перевести Числа в текст (сумму прописью)
    #34109937
alexpogorelov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в какой-то из конф на сервере было
но кажется не в ява там еще помнится склонения и пр вариации рассматривали
че та мне кажется в mssql это было... но могу ошибаться
...
Рейтинг: 0 / 0
Как перевести Числа в текст (сумму прописью)
    #34110016
dremmmmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уже сам сделал
...
Рейтинг: 0 / 0
Как перевести Числа в текст (сумму прописью)
    #34110018
LongS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ветке mssql точно было. Еще в статьях для mssql на этом сайте есть.
Так-же можно найти для Excel VBA.
...
Рейтинг: 0 / 0
Как перевести Числа в текст (сумму прописью)
    #34110026
Йогурт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dremmmmmуже сам сделал

кидай сюда код
...
Рейтинг: 0 / 0
Как перевести Числа в текст (сумму прописью)
    #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
Как перевести Числа в текст (сумму прописью)
    #34110035
dremmmmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правда только до 99 999 переводит,
А мне больше и не надо (с)
...
Рейтинг: 0 / 0
Как перевести Числа в текст (сумму прописью)
    #34110046
dremmmmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fuck одина->одна, бета версия блин ;-)
...
Рейтинг: 0 / 0
Как перевести Числа в текст (сумму прописью)
    #34110136
dremmmmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть еще пара мелких багов, исправляются за 2 минуты
...
Рейтинг: 0 / 0
Как перевести Числа в текст (сумму прописью)
    #34110830
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А здесь эта задача решается в общем виде: http://]fplab.h10.ru/digit2text.html. Т.е. с учетом рода: сравните "Один рубль", но "Одна гривна"
...
Рейтинг: 0 / 0
Как перевести Числа в текст (сумму прописью)
    #34110902
DIMA11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без обид, тока перед использованием грамматические ошибочки типа: пятдесят = пятЬдесят лучше поправить :)
...
Рейтинг: 0 / 0
Как перевести Числа в текст (сумму прописью)
    #34111054
dremmmmm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima11Без обид, тока перед использованием грамматические ошибочки типа: пятдесят = пятЬдесят лучше поправить :)
Уже поправил ;-), не часто приходится числа прописью писать... :-(
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как перевести Числа в текст (сумму прописью)
    #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
Как перевести Числа в текст (сумму прописью)
    #37382735
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы бы хоть сервер озвучили, на котором будет работать ваш замечательный код.
А то, знаете ли, Firebird и IBExpert - совсем не тоже самое, что Firebird и isql. Как пример.
...
Рейтинг: 0 / 0
Как перевести Числа в текст (сумму прописью)
    #37382759
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВы бы хоть сервер озвучили, на котором будет работать ваш замечательный код.
А то, знаете ли, Firebird и IBExpert - совсем не тоже самое, что Firebird и isql. Как пример.
Я тоже такое как-то писал на SQL (MS SQL).
ПС. В данном случае, действительно, не понятно, что за сервер. В MS SQL переменные начинаются с "собаки".
...
Рейтинг: 0 / 0
Как перевести Числа в текст (сумму прописью)
    #37382855
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ура! 5 лет не ел, не спал - ждал, когда же алгоритм придумают и опубликуют. Наконец-то! Ай да умница!

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

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

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

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

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

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


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