2012-08-16 11 views
7

%を正しく使用して、ネガティブな結果を得られないようにするにはどうすればよいですか?php%(mod関数)は大量に負になります。どのようにそれを取り除く?

<?php 
    $x = 1103515246*12345; 
    echo $x." ".decbin($x)."</BR>"; 
    $y = $x % (1 << 15); 
    echo $y." ".decbin($y)."</BR>"; 
?> 

出力:

13622895711870  11010011110111000001011001111110 

-27010    11111111111111111001011001111110 

$y = bcmod($x,(1 << 15));を解決される問題を解決します。迅速なサポートをありがとう!それは私の最初の質問でした!

+1

私は(第2のエコーのため5758)異なる結果を得るために%

てみ使用BCMathを使用するときにということです。あなたはどのPHPのバージョンを使用していますか? –

+0

@ChrisHanson、私はあなたが64butシステムを持っていると思います – RiaD

+0

[PHPが整数を処理する方法](http://php.net/manual/en/language.types.integer.php)を読んでみてください。 * "PHPが整数型の境界を超えた数に遭遇した場合、代わりに浮動小数点型として解釈されます。また、整数型の境界を越える数値を返す演算は、代わりに浮動小数点数を返します" * – Matt

答えて

8

問題は$xないintegerなく、floatと負intにキャストがあなたの代わりに大きな数字

関連する問題