PHP substr 无法在 Safari 上运行 IOS

PHP substr not working on Safari IOS

我有一个 javascript 从用户移动设备收集纬度和经度并通过 ajax 发送到 PHP 脚本。由于变量有很长的小数点,我需要它们 trimmed down 以便我可以将它们与数据库中每个位置的点集进行比较。使用 chrome 在 android 上工作正常,在 IOS 上运行它没有 trim 变量所以它总是对我的 if 语句显示负数。

list($lat,$long) = 
explode(',',htmlentities(htmlspecialchars(strip_tags($_GET['latlng']))));
echo 'Latitude: '.$lat.' Longitude: '.$long.'<br />';
$_SESSION['clat'] = substr($lat,0,-5);
$_SESSION['clong'] = substr($long,0,-4);

echo 'Latitude: '.$_SESSION['clat'].' Longitude: '.$_SESSION['clong'].'<br 
/>';
if($_SESSION['lat'] == $_SESSION['clat'] && $_SESSION['long'] == 
$_SESSION['clong']) {
echo "You are here";

所以 $lat 和 $long 是来自设备的原始值,$_SESSION 'clat' 和 'clong' 应该是 trimmed 以便它们可以与中的值进行比较数据库($_SESSION['lat'] 和 long)

$lat 和 $_SESSION['clat'] 在 IOS 设备上回显时相同。这是行不通的原因吗?有替代方案吗?

如果你想将小数点的位数设置为特定的数量,使用round。以下将数字四舍五入到小数点后 6 位:

round($mynumber, 6);

如果我使用 1.234567890,我将得到 1.234568(注意它四舍五入了最后一位。)

或者,您可以正确比较十进制数。我不知道为什么教程序员正确地做事这么难。假设我有两个 decimal/float/double 数字,我想看看它们是否相同。我取绝对差异并将其与准确度进行比较...

if(abs(a-b)<0.000001) // they are close enough to being the same

你能在查询中做到这一点吗?当然:

select * from sometable where abs(myfield-1.23456789)<0.00001

我建议正确地做,但你可以使用 round。我强烈建议不要使用 substr 来四舍五入数字。