الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

double to string with format

بدأه Moudey في 3 ديسمبر 2009 · 6 رد · 879 مشاهدة · في JavaME
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

كيف اتحكم فى تحويل الارقام الى نص

مثلا فى السى شارب نفعلها كالتالى

doubleval.ToString("#,#.##")

فكيف تتم فى J2ME CLDC

مواضيع متنوعة

#2

يمكنك التحويل باستخدام

.

String.valueOf( 5.5 )

لكن لا يمكنك عمل Format لها. يمكنك عمل ال Format بنفسك

#3
اقتباس
لكن لا يمكنك عمل Format لها. يمكنك عمل ال Format بنفسك

كيف يمكن ارجو توضيح ذلك

مواضيع متنوعة

#4
Moudey كتب:

كيف يمكن ارجو توضيح ذلك

ما اقصده انه لا يوجد شيء جاهز يمكنك من عمل Format لل String . ولكن يجب عليك كتابتها بنفسك.

اخبرني انت ما هو ال Format الذي تريده حتى اساعدك.

#5

تحويل ناتج من نوع double الى string على الهيئة التالية

1235224.17

الى

1,235,224.17

يوجد NumberFormat لكن لا اعرف كيف اضيفة فى تطبيق MIDlet

شكراً

مواضيع متنوعة

#6
Moudey كتب:

تحويل ناتج من نوع double الى string على الهيئة التالية

1235224.17

الى

1,235,224.17

يوجد NumberFormat لكن لا اعرف كيف اضيفة فى تطبيق MIDlet

شكراً

لا اعرف ما هو ال NumberFormat لا اظنه موجود في MIDP. عموما لقد كتبتها لك ولكن بسرعه لذلك ارجو ان تتاكد انها تعمل بشكل جيد واذا بها اخطاء اظن انه يمكنك اصلاحها ان شاء الله.

String format( String str ) {
 	Stack parts = new Stack();
 	String out = "";
 	int dotIndex = str.indexOf( "." );

 	if( dotIndex >= 0 )
 	parts.push( str.substring( dotIndex ) );

 	int lastIndex = dotIndex >=0 ? dotIndex : str.length();
 	for( int i=lastIndex-3;i>=0;i-=3 ) {
 	String part = str.substring( i, i + 3 );
 	lastIndex = i;

 	parts.push( part );
 	if( i > 0 )
 	parts.push( "," );

 	}


 	parts.push( str.substring( 0, lastIndex ) );
 	while( !parts.isEmpty() ) {
 	out += (String)parts.pop();

 	}

 	return out;

	}
#7

شكراً اخى الفاضل muqawem

طورت الفكرة على هذا المنوال

static String format(double v)
{
	String s = Double.toString(v), result = "", num = "", dot = "";
	try
	{
		int dotIndex = s.indexOf(".");
		if(dotIndex >= 0)
		{
			num = s.substring(0, dotIndex);
			dot = s.substring(dotIndex);
			if(dot.length() > 3)
			{
				dot = dot.substring(0, 3);
			}
		} else {
			num = s;
		}
		if(v > (9*1000*1000)) {
			Double d = new Double(v);
			Long l = new Long(d.longValue());
			num = l.toString();
		} else if(v < 1000) {
			return num + dot;
		}
		String temp = "";
		int sp = 0;
		for(int i = num.length() - 1; i >= 0; i--)
		{
			temp += num.charAt(i);
			sp++;
			if(sp == 3)
			{
				if(i > 0)
					temp += ","; 
				sp = 0;
			}
		}
		for(int i = temp.length() - 1; i >= 0; i--)
		{
			result += temp.charAt(i);
		}
		result = result + dot;
		//return result;
	} catch (Exception ex) {
		return Double.toString((double)(int)((v + 0.005d) * 100.0d) / 100.0d);
	}
	return result;
}

احياناً ينتج رقم كبير فيظهر على الطريقة التالية 8.2222E+7 حاولت حلها بتحويل من double الى long لكن هل هناك حل اخر

تم تعديل هذه المشاركة بواسطة Moudey في 6 ديسمبر 2009 في 06:00

مواضيع متنوعة

مواضيع مشابهة