سؤال

هناك سؤال مماثل حول ذلك الذي يقترح استخدام NumberFormat الذي هو ما قمت به.

أنا أستخدم طريقة التحليل () NumberFormat.

public static void main(String[] args) throws ParseException{

    DecToTime dtt = new DecToTime();
    dtt.decToTime("1.930000000000E+02");

}

public void decToTime(String angle) throws ParseException{

    DecimalFormat dform = new DecimalFormat();
    //ParsePosition pp = new ParsePosition(13);
    Number angleAsNumber = dform.parse(angle);

    System.out.println(angleAsNumber);
}

النتيجة التي أحصل عليها هي

1.93

لم أكن أتوقع حقا هذا العمل لأن 1.930000000000e + 02 هو عدد أبحث غير عادي للغاية، هل يجب علي القيام ببعض تحليل السلسلة أولا لإزالة الأصفار؟ أم أن هناك طريقة سريعة وأنيقة؟

هل كانت مفيدة؟

المحلول

عند استخدام DeCilsFormat مع تعبير في الترميز العلمي، تحتاج إلى تحديد نمط. جرب شيئا مثل

DecimalFormat dform = new DecimalFormat("0.###E0");

انظر javadocs ل decimalformat. - هناك قسم ملحوظ "الترميز العلمي".

نصائح أخرى

حفظ ذلك String.format بناء الجملة حتى تتمكن من تحويل الزوجي و Bigdecimals إلى سلاسل أي دقة بدون تدوين:

رمز جافا هذا:

double dennis = 0.00000008880000d;
System.out.println(dennis);
System.out.println(String.format("%.7f", dennis));
System.out.println(String.format("%.9f", new BigDecimal(dennis)));
System.out.println(String.format("%.19f", new BigDecimal(dennis)));

مطبوعات:

8.88E-8
0.0000001
0.000000089
0.0000000888000000000

إذا كنت تأخذ زاوية الخاص بك باعتبارها مزدوجة، بدلا من سلسلة، يمكنك استخدامها طباعة سحر.

System.out.printf("%.2f", 1.930000000000E+02);

يعرض تعويم إلى 2 منازل عشرية. 193.00 .

إذا كنت تستخدم بدلا من ذلك "%.2e" كما محدد تنسيق، سوف تحصل "1.93e+02"

(غير متأكد بالضبط ما الناتج الذي تريده، ولكن قد يكون مفيدا.)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top