【发布时间】:2009-10-10 21:23:07
【问题描述】:
我对 PHP 中的 str_replace 有疑问。当我这样做时:
$latdir = $latrichting.$Lat;
If (preg_match("/N /", $latdir)) {
$Latcoorl = str_replace(" N ", "+",$latdir);
}
else {
$Latcoorl = str_replace ("S ", "-",$latdir);
}
print_r($latdir);
print_r($Latcoorl);
print_r($latdir); 给出:N52.2702777778
但print_r ($Latcoorl);给出:N52.270277777800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 P>
是的,它添加了很多零。有人可以仅仅为了好玩而解释这种行为吗?
print_r ($latrichting);
给的:N
print_r ($Lat);
这是一个奇怪的长数字。
所以你认为它可能不是 str_replace 命令?
【问题讨论】:
-
$latrichting和$Lat的值是多少? -
感谢您的快速回复,您正在做一些事情 $Lat 被 $Lat = $latdeg + (($latmin + ($latsec/60))/60);一个数学计算,所以我想我必须在那里搜索。
-
这看起来像浮点数精度问题。
-
为什么,如果我可能会问,当你知道你将在下一步用 + 或 - 替换 N 和 S 时,你是否添加它,为什么你使用正则表达式而不仅仅是str_replace?
-
顺便说一句,你最好使用
var_dump而不是print_r,因为它会打印变量的类型。这将帮助您了解float何时变为string。
标签: php string str-replace