الدالة toBigDecimal()‎ في Kotlin

من موسوعة حسوب
مراجعة 09:07، 6 سبتمبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (مراجعة وتدقيق.)

تحلّل الدالة toBigDecimal()السلسلة النصية التي استٌدعيت معها وتحوّلها إلى عدد من النوع BigDecimal.

البنية العامة

inline fun String.toBigDecimal(): BigDecimal

منصة التشغيل والإصدار المطلوبان: Kotlin 1.2 ، JVM.

تحلّل الدالة toBigDecimal()السلسلة النصية التي استٌدعيت معها وتحوّلها إلى عدد من النوع java.math.BigDecimal ثم تعيد الناتج.

إن لم تكن السلسلة النصية تمثل عددًا، فسيُطلَق الاستثناء NumberFormatException.

inline fun String.toBigDecimal(
    mathContext: MathContext
): BigDecimal

منصة التشغيل والإصدار المطلوبان: Kotlin 1.2 ، JVM.

تحلّل الدالة toBigDecimal()السلسلة النصية التي استٌدعيت معها وتحوّلها إلى عدد من النوع java.math.BigDecimal ثم تعيد الناتج.

إن لم تكن السلسلة النصية تمثل عددًا، فسيُطلَق الاستثناء NumberFormatException. أما إن كانت هناك ضرورة للقيام بالتقريب (rounding) لكنّ وضع التقريب (rounding mode) مضبوط إلى القيمة java.math.RoundingMode.UNNECESSARY، فسيُطلَق الاستثناء ArithmeticException.

يُلاحَظ وجود الكلمة المفتاحية inline للدلالة على أن هذه الدالة مباشرة (للمزيد من التفاصيل، راجع صفحة الدوال المباشرة (inline functions)).

المعاملات

mathContext

كائن من النوع MathContext يحدد الدقة ويضبط وضع التقريب (rounding mode).

القيم المعادة

عدد من النوع BigDecimal يمثل ناتج تحويل السلسلة النصية المعطاة.

أمثلة

مثالٌ على استعمال الدالة toBigDecimal()‎:

fun main(args: Array<String>) {
    val str = "123.454"

    println(str.toBigDecimal()) // 123.454
    println(str.toBigDecimal().javaClass.kotlin.qualifiedName) // java.math.BigDecimal
}

مثالٌ آخر على استعمال الدالة toBigDecimal()‎:

fun main(args: Array<String>) {
    val str = "aa12344565656"
    
    println(str.toBigDecimal()) // الدالة ستطلق استثناء
}

سيعطي هذا المثال عند تنفيذه الناتج التالي:

Exception in thread "main" java.lang.NumberFormatException
    at java.math.BigDecimal.&amp;lt;init&amp;gt;(BigDecimal.java:494)
    at java.math.BigDecimal.&amp;lt;init&amp;gt;(BigDecimal.java:383)
    at java.math.BigDecimal.&amp;lt;init&amp;gt;(BigDecimal.java:806)
    at Simplest_versionKt.main(Simplest version.kt:4)

انظر أيضًا

مصادر