Question

Je cherche une version de PHP pour l'opération de module Javascript (en%). Je dois obtenir ceci pour certains algorithmes de cartographie que je suis en train de port à PHP. Lorsque j'utilise le bcmod de PHP, mes résultats sont éteints certains.

Voici ce que j'ai à ce jour.

public static function mod($operand_str, $modulus_res)
{
    $arg_arr = array();
    $arg_arr = func_get_args();

    $operand_str = strval($operand_str);
    $modulus_res = strval($modulus_res);

    $retain_scale_bool = (!isset($arg_arr[2]) || $arg_arr[2] == '') ? false: $arg_arr[2];

    //get decimal
    $decimal_arr = array();
    $decimal_arr = explode('.', $operand_str);

    switch(true)
    {
        case ($retain_scale_bool == true):
            $modulus_new_res = bcmod($operand_str, $modulus_res);
            $modulus_new_res = $modulus_new_res.'.'.$decimal_arr[1];
        break;

        default:
            $modulus_new_res = bcmod($operand_str, $modulus_res);
    }

    return $modulus_new_res;
}

Tout comme un exemple. Voici les résultats que je reçois quand je fais 3,1432444% 3: Avec Javascript: ,14324439999999994 Avec PHP: 0 Avec Ma fonction: 0.1432444

Je veux obtenir le résultat Javascript avec ma fonction.

Pouvez-vous aider à ajuster mon script. Je ne suis pas wiz de maths, donc je ne vais pas être en mesure de prendre cela aux premiers principes de fonctionnement du module.

Merci.

Était-ce utile?

La solution

Vous pouvez utiliser fmod () , qui fonctionne avec des flotteurs:

fmod(3.1432444, 3);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top