PHP 8.1.0 Alpha 1 available for testing

bcmod

(PHP 4, PHP 5, PHP 7, PHP 8)

bcmodKeyfi duyarlıklı sayılarda bölme işleminden kalanı bulur

Açıklama

bcmod ( string $bölünen , string $bölen , int|null $basamak = null ) : string

bölünen'in bölen'e bölünmesinden kalanı döndürür. bölen sıfır olmadıkça sonuç bölünen'in işaretini alır.

Değiştirgeler

bölünen

Dizge olarak bölünen sayı.

bölen

Dizge olarak bölen sayı.

Dönen Değerler

Dizge olarak kalanı veya bölen 0 ise null döndürür.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0 basamak artık null olabiliyor.
7.2.0 bölünen ve bölen artık ondalık kısmı kırpılıp tamsayı yapılmıyor. Dolayısıyla, işlev artık % işleci gibi değil fmod() gibi davranıyor.
7.2.0 basamak değiştirgesi eklendi.

Örnekler

Örnek 1 - bcmod() örneği

<?php
bcscale
(0);
echo 
bcmod'5',  '3'); //  2
echo bcmod'5''-3'); //  2
echo bcmod('-5',  '3'); // -2
echo bcmod('-5''-3'); // -2
?>

Örnek 2 - Ondalık basamaklarla bcmod()

<?php
bcscale
(1);
echo 
bcmod('5.7''1.3'); // PHP 7.2.0 ve sonrası 0.5 - öncesi 0
?>

Ayrıca Bakınız

  • bcdiv() - İki keyfi duyarlıklı sayıyı böler

add a note add a note

User Contributed Notes 2 notes

up
4
lauris at night dot lt
17 years ago
<?php
/**
* my_bcmod - get modulus (substitute for bcmod)
* string my_bcmod ( string left_operand, int modulus )
* left_operand can be really big, but be carefull with modulus :(
* by Andrius Baranauskas and Laurynas Butkus :) Vilnius, Lithuania
**/
function my_bcmod( $x, $y )
{
   
// how many numbers to take at once? carefull not to exceed (int)
   
$take = 5;    
   
$mod = '';

    do
    {
       
$a = (int)$mod.substr( $x, 0, $take );
       
$x = substr( $x, $take );
       
$mod = $a % $y;   
    }
    while (
strlen($x) );

    return (int)
$mod;
}

// example
echo my_bcmod( "7044060001970316212900", 150 );
?>
up
0
drahoszdenek at gmail dot com
8 years ago
The modulus can be only integer. For "floats" bcmod returns 0:

<?php
echo bcmod('10', '2.1'); // 0
?>

For real modulus you can use BN-PHP project (hosted at Bitbucket):

<?php
$eval
= new \BN\Expression\ExpressionEvaluator();
$operators = new \BN\Expression\OperatorsFactory();
$eval->setOperators($operators->getOperators(array('%')));
       
echo
$eval->evaluate('10 % 2.1'); // 1.6
echo $eval->evaluate('10 % -2.1'); // 1.6
echo $eval->evaluate('-10 % 2.1'); // -1.6
echo $eval->evaluate('-10 % -2.1'); // -1.6
?>
To Top