如何使“根号2”乘以“根号3” == “根号6”判断成立?

方棱 发布于 2013/07/30 14:54
阅读 1K+
收藏 0

Php代码:

$G2 = sqrt(2);
$G3 = sqrt(3);
$G6 = sqrt(6);

echo "G2: {$G2}<br />\n";
echo "G3: {$G3}<br />\n";
echo "G6: {$G6}<br />\n";
echo "G2 x G3 = ".($G2*$G3)."<br />\n";
echo "G2 x G3 == G6: ".($G2*$G3 == $G6 ? 'true' : 'false');

输出:

G2: 1.4142135623731
G3: 1.7320508075689
G6: 2.4494897427832
G2 x G3 = 2.4494897427832
G2 x G3 == G6: false


其实不单单是php,其他语言如Javascript,如何实现此判断的呢?

以下是问题补充:

@方棱:当两边同时乘以一个足够大的随机变量,如何判断相等呢? 即保证“N倍的根号2 x 根号3”与“N倍的根号6”,在N等于任何值时都相等呢? 比如在N值是由用户输入的时候,如何保证判断100%为True。 (2013/07/31 09:27)
加载中
0
尐帥鱼
尐帥鱼
直接判断2*#==6应该可以吧
0
泡不烂的凉粉
泡不烂的凉粉
浮点数 可以用 == 来判断吗?
0
王瑞平
王瑞平

2*3==6

就行了

0
斯诺登
斯诺登
if(bccomp(bcsqrt(2,20)*bcsqrt(3,20),bcsqrt(6,20)) == 0)
echo 'eq';
else
echo 'neq';
0
斯诺登
斯诺登

这样也可以的:

if(bccomp(sqrt(2)*sqrt(3),sqrt(6)) == 0)

echo 'eq';
else
echo 'neq';
0
random_walk
random_walk

浮点数的计算引入了一点不确定性,那么我们忽略它,方法就是判断两个数是否足够近。,如果你认为两个数只要相差不到0.00001就算相等的话,可以这样:if (fabs(result - expectedResult) < 0.00001)

楼主要搞符号计算吗?其他语言如C++有GiNaC,Python有SymPy,php的就不清楚了


0
南湖船老大
南湖船老大
楼主是半路出家的吧。。建议看看计算机文化基础
0
小耶果
小耶果
浮点数相等判断用==是大忌,除非是特别的科学计算语言.
返回顶部
顶部