2017-01-24 19 views
0

Выполнение того, что должно быть прямым вычислением в PHP 7. Следующие никогда не создают результат поплавка. Запуск var_dump($C) возвращается int(2)Float division return int - PHP 7

$A = 0.04; 
$B = 0.20; 

$C = 3*($A/$B)^2; 

echo $C; 

мне не нужен результат будет типа поплавка, мне нужна точность.

Я попытался установить точность, используя ini_set('precision', n). Я пробовал код в трех средах и получал тот же результат. Объявление (float) также не работает.

Что я делаю неправильно?

+0

попробовать литье результат, чтобы плавать как это: $ C = (поплавок) (3 * ($ А/$ В)^2); –

+4

simple: '^' does ** not ** вычисляет мощность, но двоичный XOR. '**' делает. см. также: ** [руководство] (https://secure.php.net/manual/en/function.pow.php) ** –

ответ

1
3*($A/$B)^2 

Средства 3 * (A/B) XOR 2 (^ означает xor) так Bascially результат вы видите, является результатом побитового XOR на результат вашего подразделения.
Если вы хотите поднять результат до мощности 2, вы должны использовать функцию pow(). Вы можете прочитать об этом здесь: http://php.net/manual/en/function.pow.php.

0

Вместо этого вы должны использовать pow().

$C = 3 * pow(($A/$B), 2); 

var_dump($C); // float(0.12) 
1

^ не рассчитать силу, но XOR (что ставит под поплавок INT). , чтобы вычислить мощность, использовать pow() или в PHP5.6 + **

<?php 
$A = 0.04; 
$B = 0.20; 

$C = 3*($A/$B)**2; 

echo $C; //output: 0.12 
0

попытаться использовать

<?php 

$A = 0.04; 
$B = 0.20; 

$C = 3 * pow(($A/$B),2); 

echo $C; //output: 0.36 
+1

Пожалуйста, не публикуйте открытый код, также укажите объяснение того, что делает код. –

 Смежные вопросы

  • Нет связанных вопросов^_^