0

PHP が標準の数学関数を計算する方法を理解できません。特定の例では、次の計算があります。

225 + 154 * 256 + 138 * 256 * 256 + 81 * 256 * 256 * 256 (正しい、括弧なし)

これをphpで実行すると、次の数値が生成されます:1,368,038,113

これを論理的に見て、左から右に合計を計算すると、この数値は近づくことさえありません。安価な単純な計算機を使用すると、数値が大きくなりすぎるため、256 の最後の 2 つの乗算の前に計算をあきらめます。

256 を 6 回掛ける計算で、どうしてこのような比較的小さな数になるのでしょうか?

PHPが実際にこの答えをどのように解決するかの内訳は素晴らしいでしょう.

ps私はこのページを読みました:http://www.homeandlearn.co.uk/php/php2p8.htmlそれでも上記の助けにはなりませんでした。

4

5 に答える 5

5
225 + 154 * 256 + 138 * 256 * 256 + 81 * 256 * 256 * 256

=>

225 
+ 
154 * 256 = 39,424
+ 
138 * 256 * 256 = 9,043,968
+ 
81 * 256 * 256 * 256 = 1,358,954,496

=>

225 + 39,424 + 9,043,968 + 1,358,954,496

=>

225 
+ 
39,424 
+ 
9,043,968 
+ 
1,358,954,496

=>

1,368,038,113

編集

なぜあなたがしていると思いますか:

225 + 154 * 256 + 138 * 256 * 256 + 81 * 256 * 256 * 256

=>

225 + 154 = 379
* 
256 = 97,024
+ 
138 = 97,162
* 
256 = 24,873,472
* 
256 = 6,367,608,832
+ 
81 = 6,367,608,913
* 
256 = 1,630,107,881,728
* 
256 = 417,307,617,722,368
* 
256 = 106,830,750,136,926,208
于 2012-06-08T16:10:27.187 に答える
5

結果は正しいです。PHP は最初に乗算を実行し、次に加算を実行します。次のようになります。

$res = 225 + (154 * 256) + (138 * 256 * 256) + (81 * 256 * 256 * 256)
$res = 225 + 39424       + 9043968           + 1358954496
$res = 1368038113
于 2012-06-08T16:13:02.607 に答える
1

数学の演算の基本的な順序は、乗算/除算、次に加算/減算です。

超シンプルな計算機を使用して、一度に 1 つずつ操作を行います。したがって、単純な電卓では、入力を次の乱雑な文字列のように扱うことになるでしょう。

(((((((((225 + 154) * 256) + 138) * 256) * 256) + 81) * 256) * 256) * 256).

于 2012-06-08T16:08:52.577 に答える
1

PHP は数学の規則に従います。

BODMAS (括弧、順序、除算、乗算、加算、減算)

したがって、あなたの場合、次のように評価されます。

225 + 154 * 256 + 138 * 256 * 256 + 81 * 256 * 256 * 256
225 + 39424 + 9043968 + 1358954496
1368038113

別の順序で実行する場合は、括弧を使用してください。

于 2012-06-08T16:10:44.150 に答える
1

いつものように、乗算は加算よりも優先されます。私は方程式を数えましたが、それは正しいので、あなたの問題は何ですか...?

「この数字は近づくことさえありません」 <== その通りです。

225 + 154 * 256 + 138 * 256 * 256 + 81 * 256 * 256 * 256
=225 + 39424 + 9 043 968 +1 358 954 496
=1 368 038 113

予想した数字は?どうやって数えましたか?

于 2012-06-08T16:11:33.230 に答える