mirror of
https://github.com/php/php-src.git
synced 2026-04-23 16:08:35 +02:00
fad899e566
Added BcMath\Number class. It is an immutable object, has methods that are equivalent to existing BCMath calculation functions, and can also be calculated using operators. The existing BCMath function returned a string for each calculation, but this class returns an object. RFC: https://wiki.php.net/rfc/support_object_type_in_bcmath, https://wiki.php.net/rfc/fix_up_bcmath_number_class --------- Co-authored-by: Niels Dossche <7771979+nielsdos@users.noreply.github.com>
101 lines
1.4 KiB
PHP
101 lines
1.4 KiB
PHP
--TEST--
|
|
BcMath\Number mod string by operator
|
|
--EXTENSIONS--
|
|
bcmath
|
|
--FILE--
|
|
<?php
|
|
|
|
$values = [
|
|
100,
|
|
'-20',
|
|
9,
|
|
];
|
|
|
|
foreach ($values as $value1) {
|
|
$num1 = new BcMath\Number($value1);
|
|
|
|
foreach ($values as $value2) {
|
|
echo "{$value1} % {$value2}\n";
|
|
$ret = $num1 % ((string) $value2);
|
|
$ret2 = ((string) $value1) % (new BcMath\Number($value2));
|
|
if ($ret->compare($ret2) !== 0) {
|
|
echo "Result is incorrect.\n";
|
|
}
|
|
var_dump($ret);
|
|
echo "\n";
|
|
}
|
|
}
|
|
?>
|
|
--EXPECT--
|
|
100 % 100
|
|
object(BcMath\Number)#2 (2) {
|
|
["value"]=>
|
|
string(1) "0"
|
|
["scale"]=>
|
|
int(0)
|
|
}
|
|
|
|
100 % -20
|
|
object(BcMath\Number)#3 (2) {
|
|
["value"]=>
|
|
string(1) "0"
|
|
["scale"]=>
|
|
int(0)
|
|
}
|
|
|
|
100 % 9
|
|
object(BcMath\Number)#4 (2) {
|
|
["value"]=>
|
|
string(1) "1"
|
|
["scale"]=>
|
|
int(0)
|
|
}
|
|
|
|
-20 % 100
|
|
object(BcMath\Number)#1 (2) {
|
|
["value"]=>
|
|
string(3) "-20"
|
|
["scale"]=>
|
|
int(0)
|
|
}
|
|
|
|
-20 % -20
|
|
object(BcMath\Number)#2 (2) {
|
|
["value"]=>
|
|
string(1) "0"
|
|
["scale"]=>
|
|
int(0)
|
|
}
|
|
|
|
-20 % 9
|
|
object(BcMath\Number)#3 (2) {
|
|
["value"]=>
|
|
string(2) "-2"
|
|
["scale"]=>
|
|
int(0)
|
|
}
|
|
|
|
9 % 100
|
|
object(BcMath\Number)#5 (2) {
|
|
["value"]=>
|
|
string(1) "9"
|
|
["scale"]=>
|
|
int(0)
|
|
}
|
|
|
|
9 % -20
|
|
object(BcMath\Number)#1 (2) {
|
|
["value"]=>
|
|
string(1) "9"
|
|
["scale"]=>
|
|
int(0)
|
|
}
|
|
|
|
9 % 9
|
|
object(BcMath\Number)#2 (2) {
|
|
["value"]=>
|
|
string(1) "0"
|
|
["scale"]=>
|
|
int(0)
|
|
}
|