php sqrt函数返回一个整数?

时间:2011-03-01 23:47:49

标签: php int sqrt

我正在创建一个简单的PHP程序,当(并且仅当)三个随机数计算为整数时才执行操作。随机数都是整数,用rand()函数创建。没有进入计算的具体细节,重要的是(就我的问题而言)它包括取平方根。不是一个非常有经验的PHP编码器,我所知道的唯一的平方根函数是sqrt()。问题是,sqrt()返回一个浮点数,即使输入是一个整数,输出也是精确的。我简单地想过将输出转换为整数(使用类似intval()的东西,但这不起作用,因为这会将所有输出转换为整数,使得测试无用!有关如何的任何想法做这个? 谢谢,

5 个答案:

答案 0 :(得分:4)

如果你只想确定它是否是一个完美的正方形,只需确定是否

intval(result) * intval(result) == originalValue

我不知道那些功能的php版本,但也许你呢? :)

答案 1 :(得分:3)

使用浮点时这是一个常见问题。只需检查你得到的浮点数是否非常接近整数;通常这是通过检查小数部分非常小来完成的:

if (abs(round(f)-f))<delta)
  # do stuff

这里delta是一个小常数,例如0.0001。它必须有多小取决于您希望结果与整数的接近程度。这取决于你的计算。

答案 2 :(得分:0)

if($result % 1.0 == 0)的某些内容可能会有效,但我现在无法对其进行测试。

答案 3 :(得分:0)

$result % 1e9将返回$ result的整数部分(对于负数,它将找到结果的ceil)。但它是一个黑客,所以你可能只是为了好玩而使用它。

https://repl.it/Chqm/1

答案 4 :(得分:0)

这些知识来自另一种语言的编程,但您是否尝试将表达式乘以1。 例如,如果你需要得到像

这样的整数
a = 3.45 * 8;

这样做

a = 3.45 * 8 * 1;