PHP iktidara Raising

4 Cevap php

Eh, ben PHP script bazı hesaplamalar yapmak gerekir. Ve ben yanlış davranan bir ifade var.

echo 10^(-.01);

Çıkışlar 10

echo 1 / (10^(.01));

Çıkışlar 0

echo bcpow('10', '-0.01') . '<br/>';

Çıkışlar 1

echo bcdiv('1', bcpow('10', '0.01'));

Çıkışlar 1.000....

I bcscale(100) BCMath hesaplamalar için kullanıyorum.

Excel ve Wolfram Mathematica cevabının karşılığı ~ 0,977237 verir.

Herhangi bir öneriniz?

4 Cevap

Şapka bit bilge XOR operator PHP olduğunu. Tamsayılar için pow() kullanmanız gerekir.

bcpow function sadece tamsayı üsler destekler. Bunun yerine, pow kullanmayı deneyin.

^, bit XOR operatörü ile karıştırılmamalıdır - PHP 5.6 nihayet bir çift yıldız (**) notaya doğuştan gelen bir güç operatörü tanıttı.

5.6 önce:

$power = pow(2, 3);  // 8

5.6 ve üstü:

$power = 2 ** 3;

Bir atama operatörü de mevcuttur:

$power   = 2 ** 2;
$power **=      2;  // 8

Birçok tartışmalar ve oylama sayesinde, operatör (değil solda) sağ-ilişkisel olacağına karar verildi ve operatör önceliği üzerinde bitwise not operator (~).

$a = 2 **  3 ** 2;  // 512, not 64 because of right-associativity
$a = 2 ** (3 ** 2); // 512

$b = 5 - 3 ** 3;    // -22 (power calculated before subtraction)

Ayrıca, benim için çok mantıklı değil nedense, güç negating önce unary operator (-), böylece hesaplanır:

$b = -2 ** 2;        // -4, same as writing -(2 ** 2) and not 4