在PHP 7中执行什么应该是直接计算。以下内容永远不会产生浮点结果。正在运行var_dump($C)
会返回int(2)
$A = 0.04;
$B = 0.20;
$C = 3*($A/$B)^2;
echo $C;
我不需要将结果变成浮点型,我需要精度。
我已尝试使用ini_set('precision', n)
设置精度。我已经在三种环境中尝试了代码并获得了相同的结果。声明(float)
也不起作用。
我做错了什么?
答案 0 :(得分:1)
3*($A/$B)^2
意味着3 * (A/B) XOR 2
(^
表示xor
)所以您看到的结果基本上是您的分割结果按位异或的结果。
如果要将结果提升到幂2,则应使用pow()
功能。你可以在这里阅读:http://php.net/manual/en/function.pow.php。
答案 1 :(得分:1)
^
不计算功率,而是计算XOR(将浮点数转换为int)。
要计算功率,请使用pow()
或PHP5.6 + **
<?php
$A = 0.04;
$B = 0.20;
$C = 3*($A/$B)**2;
echo $C; //output: 0.12
答案 2 :(得分:0)
您应该使用pow()代替。
$C = 3 * pow(($A/$B), 2);
var_dump($C); // float(0.12)
答案 3 :(得分:0)
尝试使用
<?php
$A = 0.04;
$B = 0.20;
$C = 3 * pow(($A/$B),2);
echo $C; //output: 0.36