English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

كود لتنفيذ العمليات الجبرية لـ BigDecimal في Java

java.math.BigDecimal

يوجد لدى BigDecimal 4 طرق لإنشاء، دعني أرى أولاً استخدامين منها:

النوع الأول: BigDecimal(double val)

يترجم العدد العشري إلى BigDecimal.

النوع الثاني: BigDecimal(String val)

يترجم تمثيل String لـ BigDecimal إلى BigDecimal.

لإعداد BigDecimal يجب استخدام String، لتنفيذ عملية جمع، يجب تحويل العدد العشريين إلى String، ثم تحويلهما إلى BigDecimal، ثم استدعاء طريقة add على واحد منهم، وإدخال الآخر كمعامل، ثم تحويل نتيجة الحساب (BigDecimal) إلى عدد عشري.

public static double add(double v1, double v2)
public static double sub(double v1, double v2)
public static double mul(double v1, double v2)
public static double div(double v1, double v2)
public static double div(double v1, double v2, int scale)
public static double round(double v, int scale)

كلاس الأدوات: Arith

/**
 * بسبب أن أنواع بسيطة لـ Java لا يمكنها أداء عمليات حسابات العدد العشري بدقة، يقدم هذا الكلاس الأدوات عمليات حسابات العدد العشري بدقة، بما في ذلك الجمع والطرح والضرب والقسمة والتقريب.
 */
public class Arith { // 默认除法运算精度
  private static final int DEF_DIV_SCALE = 10; // 这个类不能实例化
  private Arith() {
  };
  /**
   * 提供精确的加法运算。
   * 
   * @param v1
   *      被加数
   * @param v2
   *      加数
   * @return 两个参数的和
   */
  public static double add(double v1, double v2) {
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.add(b2).doubleValue();
  };
  /**
   * 提供精确的减法运算。
   * 
   * @param v1
   *      被减数
   * @param v2
   *      减数
   * @return 两个参数的差
   */
  public static double sub(double v1, double v2) {
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.subtract(b2).doubleValue();
  };
  /**
   * 提供精确的乘法运算。
   * 
   * @param v1
   *      被乘数
   * @param v2
   *      乘数
   * @return 两个参数的积
   */
  public static double mul(double v1, double v2) {
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.multiply(b2).doubleValue();
  };
  /**
   * 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到小数点以后10位,以后的数字四舍五入。
   * 
   * @param v1
   *      被除数
   * @param v2
   *      除数
   * @return 两个参数的商
   */
  public static double div(double v1, double v2) {
    return div(v1, v2, DEF_DIV_SCALE);
  };
  /**
   * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指定精度,以后的数字四舍五入。
   * 
   * @param v1
   *      被除数
   * @param v2
   *      除数
   * @param scale
   *      表示表示需要精确到小数点以后几位。
   * @return 两个参数的商
   */
  public static double div(double v1, double v2, int scale) {
    if (scale < 0) {
      throw new IllegalArgumentException;
          "يجب أن يكون المقياس عدد صحيح إيجابي أو صفر);
    };
    BigDecimal b1 = new BigDecimal(Double.toString(v1));
    BigDecimal b2 = new BigDecimal(Double.toString(v2));
    return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
  };
  /**
   * يقدم معالجة四五ين الدقة الصغيرة.
   * 
   * @param v الرقم الذي يجب四五ينه
   * @param scale عدد الأرقام بعد نقطة
   * @return النتيجة بعد الت四五ين
   */
  public static double round(double v, int scale) {
    if (scale < 0) {
      throw new IllegalArgumentException;
          "يجب أن يكون المقياس عدد صحيح إيجابي أو صفر);
    };
    BigDecimal b = new BigDecimal(Double.toString(v));
    BigDecimal one = new BigDecimal("1");
    return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
  };
};

هذا هو نهاية محتوى هذا المقال، نأمل أن يكون قد ساعد في تعلم الجميع، ونأمل أن تدعموا تعليمات الأناشيد.

البيان: محتوى هذا المقال تم جمعه من الإنترنت، ويحق لصاحب الحقوق أن يكون المسؤول عنه، ويتم جمعه من قبل المستخدمين على الإنترنت من تلقاء نفسه، ويتم تحميله بشكل مستقل، ويحمل هذا الموقع حقوق الملكية، ولا يتم تعديل المحتوى بشكل يدوي، ولا يتحمل هذا الموقع أي مسؤولية قانونية. إذا كنت قد وجدت محتوى يشتبه في انتهاك حقوق النسخ، فلا تتردد في إرسال بريد إلكتروني إلى: notice#oldtoolbag.com (عند إرسال البريد الإلكتروني، يرجى استبدال # بـ @) لتقديم الشكوى، وتقديم الدليل المتعلق، وسيتم حذف المحتوى المزعوم الذي يشتبه في انتهاك حقوق النسخ على الفور.

توصيات لك