我正在创建一个简单的 PHP 程序,该程序在(且仅当)三个随机数计算为整数时执行操作。随机数都是整数,由 rand() 函数创建。在不涉及计算的具体细节的情况下,重要的事情(就我的问题而言)是它包括取平方根。不是一个非常有经验的 PHP 编码器,我知道的唯一平方根函数是 sqrt()。问题是,sqrt() 返回一个浮点数,即使输入是整数并且输出是精确的。我曾短暂考虑过将输出转换为整数(使用类似 intval() 的方法,但这不起作用,因为这会将所有输出转换为整数,使测试无用!关于如何做到这一点的任何想法?谢谢,
问问题
1733 次
5 回答
4
如果你只是想确定它是否是一个完美的正方形,只需确定它是否
intval(result) * intval(result) == originalValue
我不知道这些函数的 php 版本,但也许你知道?:)
于 2011-03-01T23:52:12.040 回答
3
这是使用浮点数时的常见问题。只需检查您得到的浮点数是否非常接近整数;通常这是通过检查小数部分是否非常小来完成的:
if (abs(round(f)-f))<delta)
# do stuff
这delta
是一个小常数,例如 0.0001。它必须有多小取决于您期望结果与整数的接近程度。这将取决于您的计算。
于 2011-03-01T23:50:43.420 回答
0
类似的东西if($result % 1.0 == 0)
可能会起作用,但我现在没有能力对其进行测试。
于 2011-03-01T23:52:15.190 回答
0
$result % 1e9
将返回 $result 的整数部分(对于负数,它将找到结果的 ceil)。但它是一个 hack,所以你可能只是为了好玩而使用它。
于 2016-07-31T03:45:44.623 回答
0
这些知识来自用另一种语言编程,但是您是否尝试过将表达式乘以 1。例如,如果您需要获得类似的整数
a = 3.45 * 8;
做这个
a = 3.45 * 8 * 1;
于 2016-07-31T03:58:41.637 回答