سؤال:
عند إجراء عملية على نوعين من القيمتين ، ستكون هناك في بعض الأحيان مشاكل مع قيم النتائج غير الطبيعية. على سبيل المثال:
System.out.println (19.99+20) ؛ System.out.println (1.0-0.66) ؛ System.out.println (0.033*100) ؛ System.out.println (12.3/100) ؛
الإخراج:
39.9899999999999999995
0.339999999999999999997
3.300000000000000003
0.123000000000000001
حل:
لا يمكن أن تنفذ أنواع النقاط العائمة البسيطة والمضاعفة في Java لأنها طبيعية في معظم الحالات ، ولكن في بعض الأحيان تحدث المشاكل كما هو موضح أعلاه. هذه المشكلة ليست في الواقع خطأ في Java ، لأن الكمبيوتر نفسه ثنائي ، وأرقام النقطة العائمة هي في الواقع قيم تقريبية. لذلك ، عندما يتم تحويلها من أرقام الفاصلة الثنائية إلى العشرية العشرية ، تُفقد الدقة بسهولة ، مما يؤدي إلى انخفاض في الدقة.
لضمان الدقة ، يجب عليك استخدام فئة BigDecimal ، ولا يمكنك التحويل مباشرة من مزدوج إلى كبير. يجب أن تتحول مزدوج إلى سلسلة ثم BigDecimal. أي أنه لا يمكنك استخدام طريقة BigDecimal (مزدوجة Val) ، وسوف تجد أنه لا يوجد أي تأثير. لاستخدام طريقة BigDecimal (سلسلة Val). وترد أمثلة محددة أدناه.
أمثلة على أربع عمليات من النوع المزدوج:
1. إضافة ما يصل
إضافة مزدوجة ثابتة عامة (Double A1 ، double B1) {BigDecimal A2 = New BigDecimal (double.toString (A1)) ؛ BigDecimal B2 = جديد BigDecimal (double.toString (B1)) ؛ إرجاع A2.Add (b2) .doublevalue () ؛ }2. الطرح
public static double sub (double a1 ، double b1) {bigdecimal a2 = new BigDecimal (double.toString (a1)) ؛ BigDecimal B2 = جديد BigDecimal (double.toString (B1)) ؛ إرجاع A2.Subtract (B2) .DoubleValue () ؛ }3. اضرب
public static double mul (double a1 ، double b1) {bigdecimal a2 = new BigDecimal (double.toString (a1)) ؛ BigDecimal B2 = جديد BigDecimal (double.toString (B1)) ؛ إرجاع A2.multiply (b2) .doublevalue () ؛ }4. التحلل
div static public (Double A1 ، Double B1 ، int Scale) {if (Scale <0) {throw new alficalArgumentException ("error") ؛ } BigDecimal A2 = جديد BigDecimal (double.toString (A1)) ؛ BigDecimal B2 = جديد BigDecimal (double.toString (B1)) ؛ إرجاع A2.divide (B2 ، Scale ، BigDecimal.round_half_up) .DoubleValue () ؛ }عندما تنقسم معلمة المقياس إلى غير مكتمل ، حدد الدقة.
إن حل العملية غير الطبيعية للنوع المزدوج في Java هو كل المحتوى الذي أشاركه معك. آمل أن تتمكن من إعطائك مرجعًا وآمل أن تتمكن من دعم wulin.com أكثر.