غلاف/طبقة ملحقة لـ BC Math موجهة للكائنات.
يقدم decimal تنفيذًا سلسًا وموجهًا للكائنات للحسابات الأساسية ذات الدقة التعسفية، باستخدام BC Math إذا كان ذلك متاحًا.
يمكنك معرفة المزيد حول دقة النقطة العائمة هنا.
مثال:
use PrestaShop decimal decimal Number ;
use PrestaShop decimal Operation Rounding ;
echo ( new decimal Number ( ' 0.1 ' ))
-> plus ( new decimal Number ( ' 0.7 ' ))
-> times ( new decimal Number ( ' 10 ' ))
-> round ( 0 , Rounding:: ROUND_FLOOR )
// echoes '8'
عبر الملحن
$ composer require prestashop/ decimal
روابط سريعة:
إنشاء رقم decimal جديد.
public __construct ( string $ number [, int $ exponent = null ] ): decimal Number
هناك طريقتان لإنشاء رقم decimal رقم decimal :
// create a number from string
$ number = new PrestaShop decimal decimal Number ( ' 123.456 ' );
echo $ number ; // echoes '123.456'
// exponent notation
$ number = new PrestaShop decimal decimal Number ( ' 123456 ' , - 3 );
echo $ number ; // echoes '123.456'
إرجاع النتيجة المحسوبة لإضافة رقم آخر إلى الرقم الحالي.
public decimal Number:: plus ( decimal Number $ addend ): decimal Number
أمثلة:
$ a = new PrestaShop decimal decimal Number ( ' 123.456 ' );
$ b = new PrestaShop decimal decimal Number ( ' 654.321 ' );
echo $ a -> plus ( $ b ); // echoes '777.777'
إرجاع النتيجة المحسوبة لطرح رقم آخر من الرقم الحالي.
public decimal Number:: minus ( decimal Number $ subtrahend ): decimal Number
أمثلة:
$ a = new PrestaShop decimal decimal Number ( ' 777.777 ' );
$ b = new PrestaShop decimal decimal Number ( ' 654.321 ' );
echo $ a -> minus ( $ b ); // echoes '123.456'
إرجاع النتيجة المحسوبة لضرب الرقم الحالي برقم آخر.
public decimal Number:: times ( decimal Number $ factor ): decimal Number
أمثلة:
$ a = new PrestaShop decimal decimal Number ( ' 777.777 ' );
$ b = new PrestaShop decimal decimal Number ( ' 654.321 ' );
echo $ a -> times ( $ b ); // echoes '508915.824417'
إرجاع النتيجة المحسوبة لقسمة الرقم الحالي على رقم آخر، مع ما يصل إلى عدد معين من المواضع decimal (6 بشكل افتراضي).
public decimal Number:: dividedBy ( decimal Number $ divisor [, int $ precision = Operation Division:: DEFAULT_PRECISION ] )
أمثلة:
$ a = new PrestaShop decimal decimal Number ( ' 777.777 ' );
$ b = new PrestaShop decimal decimal Number ( ' 654.321 ' );
echo $ a -> dividedBy ( $ b , 0 ); // echoes '1'
echo $ a -> dividedBy ( $ b , 5 ); // echoes '1.18867'
echo $ a -> dividedBy ( $ b , 10 ); // echoes '1.1886780341'
echo $ a -> dividedBy ( $ b , 15 ); // echoes '1.188678034175886'
إرجاع نتيجة تأكيد المقارنة.
$ a = new PrestaShop decimal decimal Number ( ' 777.777 ' );
$ b = new PrestaShop decimal decimal Number ( ' 654.321 ' );
$ a -> equals ( $ b ); // returns false
$ a -> isLowerThan ( $ b ); // returns false
$ a -> isLowerOrEqualThan ( $ b ); // returns false
$ a -> isGreaterThan ( $ b ); // returns true
$ a -> isGreaterOrEqualThan ( $ b ); // returns true
// shortcut methods
$ a -> equalsZero (); // returns false
$ a -> isLowerThanZero (); // returns false
$ a -> isLowerOrEqualThanZero (); // returns false
$ a -> isGreaterThanZero (); // returns true
$ a -> isGreaterOrEqualThanZero (); // returns true
إرجاع الرقم كسلسلة، مع تقريبه اختياريًا، مع العدد الدقيق للمواضع decimal .
public decimal Number:: toPrecision ( int $ precision [, string $ roundingMode = Rounding:: ROUND_TRUNCATE ] ): string
أمثلة:
$ a = new PrestaShop decimal decimal Number ( ' 123.456 ' );
$ a = new PrestaShop decimal decimal Number ( ' -123.456 ' );
// truncate / pad
$ a -> toPrecision ( 0 ); // '123'
$ a -> toPrecision ( 1 ); // '123.4'
$ a -> toPrecision ( 2 ); // '123.45'
$ a -> toPrecision ( 3 ); // '123.456'
$ a -> toPrecision ( 4 ); // '123.4560'
$ b -> toPrecision ( 0 ); // '-123'
$ b -> toPrecision ( 1 ); // '-123.4'
$ b -> toPrecision ( 2 ); // '-123.45'
$ b -> toPrecision ( 3 ); // '-123.456'
$ b -> toPrecision ( 4 ); // '-123.4560'
// ceil (round up)
$ a -> toPrecision ( 0 , PrestaShop decimal Operation Rounding:: ROUND_CEIL ); // '124'
$ a -> toPrecision ( 1 , PrestaShop decimal Operation Rounding:: ROUND_CEIL ); // '123.5'
$ a -> toPrecision ( 2 , PrestaShop decimal Operation Rounding:: ROUND_CEIL ); // '123.46'
$ b -> toPrecision ( 0 , PrestaShop decimal Operation Rounding:: ROUND_CEIL ); // '-122'
$ b -> toPrecision ( 1 , PrestaShop decimal Operation Rounding:: ROUND_CEIL ); // '-123.3'
$ b -> toPrecision ( 2 , PrestaShop decimal Operation Rounding:: ROUND_CEIL ); // '-123.44'
// floor (round down)
$ a -> toPrecision ( 0 , PrestaShop decimal Operation Rounding:: ROUND_FLOOR ); // '123'
$ a -> toPrecision ( 1 , PrestaShop decimal Operation Rounding:: ROUND_FLOOR ); // '123.4'
$ a -> toPrecision ( 2 , PrestaShop decimal Operation Rounding:: ROUND_FLOOR ); // '123.45'
$ b -> toPrecision ( 0 , PrestaShop decimal Operation Rounding:: ROUND_FLOOR ); // '-124'
$ b -> toPrecision ( 1 , PrestaShop decimal Operation Rounding:: ROUND_FLOOR ); // '-123.5'
$ b -> toPrecision ( 2 , PrestaShop decimal Operation Rounding:: ROUND_FLOOR ); // '-123.46'
// half-up (symmetric half-up)
$ a -> toPrecision ( 0 , PrestaShop decimal Operation Rounding:: ROUND_HALF_UP ); // '123'
$ a -> toPrecision ( 1 , PrestaShop decimal Operation Rounding:: ROUND_HALF_UP ); // '123.5'
$ a -> toPrecision ( 2 , PrestaShop decimal Operation Rounding:: ROUND_HALF_UP ); // '123.46'
$ b -> toPrecision ( 0 , PrestaShop decimal Operation Rounding:: ROUND_HALF_UP ); // '-123'
$ b -> toPrecision ( 1 , PrestaShop decimal Operation Rounding:: ROUND_HALF_UP ); // '-123.5'
$ b -> toPrecision ( 2 , PrestaShop decimal Operation Rounding:: ROUND_HALF_UP ); // '-123.46'
// half-down (symmetric half-down)
$ a -> toPrecision ( 0 , PrestaShop decimal Operation Rounding:: ROUND_HALF_DOWN ); // '123'
$ a -> toPrecision ( 1 , PrestaShop decimal Operation Rounding:: ROUND_HALF_DOWN ); // '123.4'
$ a -> toPrecision ( 2 , PrestaShop decimal Operation Rounding:: ROUND_HALF_DOWN ); // '123.46'
$ a -> toPrecision ( 0 , PrestaShop decimal Operation Rounding:: ROUND_HALF_DOWN ); // '-123'
$ a -> toPrecision ( 1 , PrestaShop decimal Operation Rounding:: ROUND_HALF_DOWN ); // '-123.4'
$ a -> toPrecision ( 2 , PrestaShop decimal Operation Rounding:: ROUND_HALF_DOWN ); // '-123.46'
// half-even
$ a -> toPrecision ( 0 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '123'
$ a -> toPrecision ( 1 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '123.4'
$ a -> toPrecision ( 2 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '123.46'
$ a -> toPrecision ( 0 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '-123'
$ a -> toPrecision ( 1 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '-123.4'
$ a -> toPrecision ( 2 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '-123.46'
$ a = new PrestaShop decimal decimal Number ( ' 1.1525354556575859505 ' );
$ a -> toPrecision ( 0 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '1'
$ a -> toPrecision ( 1 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '1.2'
$ a -> toPrecision ( 2 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '1.15'
$ a -> toPrecision ( 3 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '1.152'
$ a -> toPrecision ( 4 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '1.1525'
$ a -> toPrecision ( 5 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '1.15255'
$ a -> toPrecision ( 6 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '1.152535'
$ a -> toPrecision ( 7 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '1.1525354'
$ a -> toPrecision ( 8 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '1.15253546'
$ a -> toPrecision ( 9 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '1.152535456'
$ a -> toPrecision ( 10 , PrestaShop decimal Operation Rounding:: ROUND_HALF_EVEN ); // '1.1525354556'
يتصرف التقريب مثل toPrecision
، ولكنه يوفر "ما يصل إلى" عدد معين من المواضع decimal (لا يضيف أصفارًا زائدة).
public decimal Number:: round ( int $ max decimal s [, string $ roundingMode = Rounding:: ROUND_TRUNCATE ] ): string
أمثلة:
$ a = new PrestaShop decimal decimal Number ( ' 123.456 ' );
$ a = new PrestaShop decimal decimal Number ( ' -123.456 ' );
// truncate / pad
$ a -> round ( 0 ); // '123'
$ a -> round ( 1 ); // '123.4'
$ a -> round ( 2 ); // '123.45'
$ a -> round ( 3 ); // '123.456'
$ a -> round ( 4 ); // '123.456'
$ b -> round ( 0 ); // '-123'
$ b -> round ( 1 ); // '-123.4'
$ b -> round ( 2 ); // '-123.45'
$ b -> round ( 3 ); // '-123.456'
$ b -> round ( 4 ); // '-123.456'
ينشئ نسخة جديدة من هذا الرقم مضروبًا في 10^الأس
public decimal Number:: toMagnitude ( int $ exponent ): decimal Number
أمثلة:
$ a = new PrestaShop decimal decimal Number ( ' 123.456789 ' );
// shift 3 digits to the left
$ a -> toMagnitude (- 3 ); // 0.123456789
// shift 3 digits to the right
$ a -> toMagnitude ( 3 ); // 123456.789
$ number = new PrestaShop decimal decimal Number ( ' 123.45 ' );
$ number -> getIntegerPart (); // '123'
$ number -> getFractionalPart (); // '45'
$ number -> getPrecision (); // '2' (number of decimal s)
$ number -> getSign (); // '' ('-' if the number was negative)
$ number -> getExponent (); // '2' (always positive)
$ number -> getCoefficient (); // '123456'
$ number -> isPositive (); // true
$ number -> isNegative (); // false
$ number -> invert (); // new decimal decimal Number('-123.45')
$ composer install
$ vendor/bin/phpunit
يرجى الاطلاع على المساهمة للحصول على التفاصيل.
رخصة معهد ماساتشوستس للتكنولوجيا (MIT). يرجى الاطلاع على ملف الترخيص لمزيد من المعلومات.