我正在创建一个简单的PHP程序,当(并且仅当)三个随机数计算为整数时才执行操作。随机数都是整数,用rand()函数创建。没有进入计算的具体细节,重要的是(就我的问题而言)它包括取平方根。不是一个非常有经验的PHP编码器,我所知道的唯一的平方根函数是sqrt()。问题是,sqrt()返回一个浮点数,即使输入是一个整数,输出也是精确的。我简单地想过将输出转换为整数(使用类似intval()的东西,但这不起作用,因为这会将所有输出转换为整数,使得测试无用!有关如何的任何想法做这个? 谢谢,
答案 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)。但它是一个黑客,所以你可能只是为了好玩而使用它。
答案 4 :(得分:0)
这些知识来自另一种语言的编程,但您是否尝试将表达式乘以1。 例如,如果你需要得到像
这样的整数a = 3.45 * 8;
这样做
a = 3.45 * 8 * 1;