• 0

التعامل مع الأعداد الضخمة و الحسابات في جافا Java

أقوم بحسابات على أرقام ضخمة في جافا لكن تظهر لي أخطاء بأن هذه الأرقام كبيرة.. جربت أن استخدم النمط long لكن أيضاً لم ينجح الأمر.

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1

في حال كانت القيم التي تتعامل معها أعداد صحيحة Integer، استخدم الصف BigInteger لحل مشكلتك فهو صف مخصص للتعامل مع الأرقام الضخمة كالتالي:

import java.math.BigInteger;
BigInteger Bigint = new BigInteger("88888999999999999999999999"); # أدخل الرقم كسلسلة نصية

في حال كانت بياناتك أعداد عشرية، استخدم الصف BigDemical بنفس الطريقة السابقة:

import java.math.BigDemical;
BigDemical Bigdem = new BigDemical("88888999999999999999999.2123"); # أدخل الرقم كسلسلة نصية

للقيام بعمليات الجمع والضرب والقسمة..إلخ..  في هذه الحالة نستخدم توابع جاهزة معرفة من أجل هذه الكلاسات مثال:

/*
BigInteger x = new BigInteger("1");
BigInteger y = new BigInteger("5");
الجمع يتم كالتالي
BigInteger z=x.add(y);
الطرح
BigInteger w=x.subtract(y);
الضرب
BigInteger k=x.multiply(y);
القسمة
BigInteger k=x.divide(y);
*/


# مثال لتابع يحسب العاملي لعدد ما
import java.math.BigInteger;

public class BigNumbers
{
	
	static BigInteger factorial(int m)
	{
		
		BigInteger x = new BigInteger("1");
		for (int i = 2; i <= m; i++)
			x = x.multiply(BigInteger.valueOf(i));  # BigInteger.valueOf(i) هذه التعليمة لتحويل نمط المتغير

		return x;
	}

	
	public static void main(String args[])
	{
		System.out.println(factorial(50));
	}
}

 

تمّ تعديل بواسطة Ali Haidar Ahmad
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

إن كان عدد الخانات كبير جداً يمكنك استخدام الصنف Big Integer للأعداد الصحيحة و Big Decimal للأعدادا العشرية في جافا والذي يحول القيم الرقمية لسلاسل نصية و يتعامل بها على هذا الأساس:

مثال عن Big Decimal:

import java.math.BigDecimal;
 
public class BigDecimalExample {
     
    public static void main(String[] args) {
         
        // تعريف عددين new BigDecimals
        BigDecimal BigDec1 = new BigDecimal("192438126384712332");
        BigDecimal BigDec2 = new BigDecimal("112213664998918253");
 
        // جمع
        BigDec1 = BigDec1.add(BigDec2);
        System.out.println("BigDec1 = " + BigDec1);
 
        // جداء
        BigDec1 = BigDec1.multiply(BigDec2);
        System.out.println("BigDec1 = " + BigDec1);
 
        // طرح
        BigDec1 = BigDec1.subtract(BigDec2);
        System.out.println("BigDec1 = " + BigDec1);
 
        // قسمة
        BigDec1 = BigDec1.divide(BigDec2);
        System.out.println("BigDec1 = " + BigDec1);
 
        // القوة power of 2
        BigDec1 = BigDec1.pow(2);
        System.out.println("BigDec1 = " + BigDec1);
 
        // القيم السالبة BigDecimal1
        BigDec1 = BigDec1.negate();
        System.out.println("BigDec1 = " + BigDec1);
    }
}

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن