我正在处理纬度和经度来确定商业地点并遇到一些奇怪的行为.
在下面的Perl片段中,等式分配数据以$v1评估为1.当我调用时acos($v1),我收到sqrt错误.当我打电话acos("$v1")(带引号)时,我没有.调用acos(1)也不会产生错误.为什么报价很重要?
use strict;
use warnings 'all';
sub acos {
my $rad = shift;
return (atan2(sqrt(1 - $rad**2), $rad));
}
my $v1 = (0.520371764072297 * 0.520371764072297) +
(0.853939826425894 * 0.853939826425894 * 1);
print acos($v1); # Can't take sqrt of -8.88178e-16 at foo line 8.
print acos("$v1"); # 0
Run Code Online (Sandbox Code Playgroud) perl ×1