浮点除法返回int - PHP 7

时间:2017-01-24 09:43:19

标签: php precision

在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)也不起作用。

我做错了什么?

4 个答案:

答案 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