mysql float 判断相等_MySQL-带FLOAT(10,6)的BETWEEN运算符的行为类似于>和&lt ;,而不是> =和< =...

bd96500e110b49cbb3cd949968f18be7.png

I have a table with latitudes and longitudes of locations. I was using the BETWEEN clause successfully until I reached cases where the values being searched for where the same as those in the database. In these cases it is not returning results. Here is an example, where as:

SELECT

`Location`.`latitude`,

`Location`.`longitude`

FROM

`locations` AS `Location`

WHERE `latitude` >= 40.735619

AND `latitude` <= 40.736561

AND `longitude` >= -74.033882

AND `longitude` <= -74.030861;

Returns:

"latitude" "longitude"

"40.736561" "-74.033882"

"40.735619" "-74.030861"

If I use the BETWEEN CLAUSE (Notice I've even tried this):

SELECT

`Location`.`latitude`,

`Location`.`longitude`

FROM

`locations` AS `Location`

WHERE `latitude` BETWEEN LEAST(40.735619, 40.736561)

AND GREATEST(40.736561, 40.735619)

AND `longitude` BETWEEN LEAST(- 74.033882, - 74.030861)

AND GREATEST(- 74.030861, - 74.033882)

I get 0 results. Oh, whats more, if I add and/or subtract 0.000001 to each value Ex. "BETWEEN (40.735619-0.00001)" etc. If I do this it does return the two results.

Fine, I'll use >= and <= but what I don't understand is why BETWEEN is acting like > and < when in the docs its pretty clear:

If expr is greater than or equal to min and expr is less than or equal to max, BETWEEN returns 1

解决方案

You should use a decimal data type rather than a float. Equality, and hence between, for floating point values is imprecise

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值