Найти значения с плавающей запятой между запросами с плавающей запятой с помощью MySQLi PHP?

#php #mysqli #floating-point

#php #mysqli #значение с плавающей запятой

Вопрос:

Я работаю с широтой и долготой, чтобы получить точки, которые ближе к другим точкам. Мне нужно найти широты, которые могут существовать между двумя числами в моей базе данных, к сожалению, я не могу найти — в качестве примера — 10.0015315, который находится между 10.0015316 и 10.0015314. Я использовал WHERE и BETWEEN, которые всегда работают с целыми числами, но я не могу получить результаты, используя их с этими числами с плавающей запятой. В чем может быть причина или как я могу это сделать?

 $latCord = 10.0015315; //I want to find this FLOAT, or a group of FLOATS in a column point_lat BETWEEN 2 numbers.
$radio = 0.0000001; //This changes dynamically
$radioLatUp = $latCord   $radio; // 10.0015316
$radioLatDown = $latCord - $radio; // 10.0015314

//$sql = 'SELECT * FROM pointnet WHERE `point_lat` BETWEEN ? AND ?';
$sql = 'SELECT * FROM pointnet WHERE `point_lat` >= ? AND `point_lat` <= ?';

$pre_stmt = $this->con->prepare($sql);
$pre_stmt->bind_param('ss',$radioLatDown,$radioLatUp);
$pre_stmt->execute() or die($this->con->error);
$result = $pre_stmt->get_result();

if ($result->num_rows > 0) {
    while($row = mysqli_fetch_assoc($result)) {
        $point['lat'] = $row['point_lat'];
        $point['long'] = $row['point_long'];
        $point['name'] = $row['point_name'];
        $points[] = $point;
    }

    sendResponse(true,$points);

}else{

    sendResponse(false,'No points close to you');   

}   
  

Комментарии:

1. Почему вы не используете d в качестве своего типа данных in bind_param вместо s ? возможно, из-за этого вы теряете точность … также, каков тип данных point_lat ?

2. О боже… Спасибо, чувак, там была опечатка, потому что я использую двойные значения, а не строки, отклоняясь от курса. Приветствую.

3. Решило ли это проблему?

4. В общем, это была проблема, но я не знаю, как принять ваш комментарий за правильный ответ, но это решило проблему. Большое вам спасибо.

5. Вероятно, лучше всего просто удалить вопрос, поскольку проблема заключается всего лишь в опечатке, ответ вряд ли поможет кому-либо еще.