Domanda

Sto cercando una versione di PHP per l'operazione Javascript modulo (%). Ho bisogno di questo per alcuni algoritmi di mapping che sto cercando di porto a PHP. Quando uso bcmod di PHP, i miei risultati sono fuori alcuni.

Ecco quello che ho finora.

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;
}

A titolo di esempio. Ecco i risultati che ottengo quando faccio 3,1432,444 mila% 3: Con Javascript: ,14324439999999994 Con PHP: 0 Con mio Funzione: 0.1432444

Voglio ottenere il risultato JavaScript con la mia funzione.

Si può aiutare a regolare il mio script. Io non sono un mago matematica, quindi non ho intenzione di essere in grado di prendere questo per i primi principi del funzionamento modulo.

Grazie.

È stato utile?

Soluzione

È possibile utilizzare fmod (), che lavora con i galleggianti:

fmod(3.1432444, 3);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top