如果连续的价格是38.03,那么以下搜索限制应该都返回包含结果的行.
WHERE price >= '38.02' AND price <= '38.03' (这个有效)
WHERE price >= '20' AND price <= '100' (这个有效)
WHERE price >= '38.03' AND price <= '38.03' (这不起作用)
WHERE price >= '38.03' AND price <= '100' (这不起作用)
WHERE price >= '38.03' (这不起作用)
WHERE price <= '38.03' (这个有效)
价格作为浮动存储在DB中.
所以基本上<=是工作而>=不是.这有什么原因可以吗?
Ale*_*rMP 24
请记住,float在精度方面,这是一种有缺陷的数据类型.如果你代表12浮动,你会得到11.99999999999998什么.
'38.03' 可以转换为十进制,或更精确的其他数据类型(取决于RDBMS,我在这里是一般的),它将不同于浮点值.
float是32位,精度低.Double工作得更好,是64位数据类型.某些系统中的十进制数据类型是128位数字数据类型,用于存储非常精确的数值,通常用于计价货币.
并且,跳过使用=运算符比较float值的习惯.浮点数用于近似和快速计算,只有与范围进行比较才能检查a的值float.这基本上对每个系统都有效.
| 归档时间: |
|
| 查看次数: |
35263 次 |
| 最近记录: |