السلام عليكم
كيف اتحكم فى تحويل الارقام الى نص
مثلا فى السى شارب نفعلها كالتالى
doubleval.ToString("#,#.##")فكيف تتم فى J2ME CLDC
السلام عليكم
كيف اتحكم فى تحويل الارقام الى نص
مثلا فى السى شارب نفعلها كالتالى
doubleval.ToString("#,#.##")فكيف تتم فى J2ME CLDC
يمكنك التحويل باستخدام
.
String.valueOf( 5.5 )
لكن لا يمكنك عمل Format لها. يمكنك عمل ال Format بنفسك
اقتباسلكن لا يمكنك عمل Format لها. يمكنك عمل ال Format بنفسك
كيف يمكن ارجو توضيح ذلك
Moudey كتب:كيف يمكن ارجو توضيح ذلك
ما اقصده انه لا يوجد شيء جاهز يمكنك من عمل Format لل String . ولكن يجب عليك كتابتها بنفسك.
اخبرني انت ما هو ال Format الذي تريده حتى اساعدك.
تحويل ناتج من نوع double الى string على الهيئة التالية
1235224.17
الى
1,235,224.17
يوجد NumberFormat لكن لا اعرف كيف اضيفة فى تطبيق MIDlet
شكراً
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;
}شكراً اخى الفاضل 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