Java Double لتحويل السلسلة دون تنسيق
سؤال
لدي الرقم 654987. إنه معرف في قاعدة بيانات. أريد تحويلها إلى سلسلة. يجعل double.tostring العادية (القيمة) في شكل علمي ، 6.54987e5. شيء لا أريده.
وظائف التنسيق الأخرى وجدت فحص اللغة الحالية وتضيف الفواصل ذات الألف المناسبة وما شابه. منذ معرف ، لا أستطيع قبول أي تنسيق على الإطلاق.
كيف افعلها؟
تحرير] للتوضيح: أنا أعمل على قاعدة بيانات خاصة تعامل جميع الأعمدة الرقمية على أنها الزوجي. Double هو النوع الوحيد (الرقمي) الذي يمكنني استرداده من قاعدة البيانات.
المحلول
استخدم طويلًا:
long id = 654987;
String str = Long.toString(id);
نصائح أخرى
استخدم ثابتًا NumberFormat
(على وجه التحديد أ DecimalFormat
):
double value = getValue();
String str = new DecimalFormat("#").format(value);
بدلاً من ذلك ببساطة int
(أو long
إذا كان نطاق القيم كبيرًا جدًا):
String str = String.valueOf((long) value);
ولكن مرة أخرى: لماذا لديك قيمة عدد صحيح (أي رقم "كامل") في أ double
متغير في المقام الأول؟
إذا كان معرف عدد صحيح في قاعدة البيانات ، فاستخدم عددًا صحيحًا بدلاً من ذلك. ثم سوف تنسيق كصاحب صحيح.
ماذا عن String.valueOf((long)value);
ماذا عن:
Long.toString(value)
أو
new String(value)
كما يمكنك استخدام
double value = getValue();
NumberFormat f = NumberFormat.getInstance();
f.setGroupingUsed(false);
String strVal = f.format(value);
إذا كان ما تقوم بتخزينه هو معرف (أي شيء يستخدم فقط لتحديد كيان آخر ، ليس له قيمة الرقمية الفعلية أهمية) ، فلا ينبغي أن تستخدم مزدوجًا لتخزينه. من شبه المؤكد أن الدقة تفسدك.
إذا لم تسمح قاعدة البيانات الخاصة بك بقيم عدد صحيح ، فيجب عليك تخزين المعرفات كسلاسل. إذا لزم الأمر ، اجعل السلسلة تمثيل سلسلة من عدد صحيح تريد استخدامه. مع الاستخدام المناسب للأصفار الرائدة ، يمكنك جعل الترتيب الأبجدي للسلسلة نفس الترتيب الرقمي للـ INTs.
هذا يجب أن يجعلك حول القضية.
ماذا عن Long.ToString ((طويلة) القيمة)؟
double d = 56789;
String s = d+"";