检查用户定义的数字是PHP中的完美立方体还是整数立方体

检查用户定义的数字是PHP中的完美立方体还是整数立方体,php,Php,我需要找出给定的数字是否是整数的立方 大学里提出的问题:设计一个PHP页面,检查输入的数字是否是PHP中整数的立方体。 在下面的程序中,is_float()无法检查$num2是否为float。我不知道为什么 <?php $num=$_POST["t1"]; $num2=pow($num,1/3); echo $num2."<br>"; $res=$num%$num2; echo $res."<br><br>"; $test=is_float($num2)

我需要找出给定的数字是否是整数的立方

大学里提出的问题:设计一个PHP页面,检查输入的数字是否是PHP中整数的立方体。 在下面的程序中,
is_float()
无法检查
$num2
是否为float。我不知道为什么

<?php
$num=$_POST["t1"];
$num2=pow($num,1/3);
echo $num2."<br>";
$res=$num%$num2;
echo $res."<br><br>";
$test=is_float($num2);
echo "float ".$test."<br>";
var_dump(is_float($num2));

//if($num%$num2==0 || $num%$num2==1)
if (is_float($num2)==TRUE) {
  echo"<font color='FF0000' size='+2'>". $num. " is not Cube of an integer</font>";
} else {
  echo "<font color='FF0000' size='+2'>". $num. " is  a Cube of an integer</font>";
}
?>

我希望你的老师没有出现堆栈溢出;)

我只想给你一些建议,这样你就能自己找到答案了。来吧,没那么难! 无论如何,我也发布了解决方案

您是否尝试检查返回的号码类型:

pow(27, 1/3);
我猜当你让PHP计算一个幂小于1的数字,或者是一个整数时,PHP总是会返回一个浮点

解决方案:这里最好的方法是检查pow()的结果是否等于其自身的整个部分。您可以使用floor()函数执行此操作(请参见):


那么你期望什么呢?这意味着什么不起作用?即使这个值像1,25,36…等等,浮点值总是真的,但它应该是假的,对吧!!您正在检查
$num2=pow($num,1/3)对于25号,你得到2.92401773821。当然是一个浮点数,也许你是想检查
$num
而不是
$num2
?但是当你把这个数字,即2.92401773821($num2)放在is_float()中时,结果是真的,对于像pow()中的25($num)这样的非浮点数同样的结果,即为什么?我没有得到它让$num=27,然后$num2=3和$test=10,当值为64,然后$num2=4和$test=10,但现在它不是常数,当值为125,然后$num2=5和$test=1,当值为9,然后$num2=2.080838230519和$test=1,那么我如何使用$test值来确定值是否是立方体呢!!
// ...
$num2 = pow($num, 1/3);
$test = ($num2 == floor($num2))
// ...