MySQL:如果条件未给出浮点值的意外值

时间:2019-02-20 11:35:52

标签: mysql if-statement

我的mysql查询是这样的

select if(brand_name="royal", b.multiplier, 1) as multiplier from brand;

我的数据库有以下记录

brand_name = royal,
multiplier = 1.06 (type: float(5,2))

结果乘数值应为 1.06 ,但其结果值应为: 1.0599999427795

请您告诉我如何解决此问题?

2 个答案:

答案 0 :(得分:0)

这只是浮动的行为方式:

Decimal 1.06 represented as single

正确的解决方案是使用DECIMAL(M, D)数据类型。

答案 1 :(得分:0)

如果要固定小数点值,则需要将乘数的typefloat-> decimal

更改

enter image description here

然后使用此代码

SELECT IF( brand_name =  "apple", multiplier, 1 ) AS multiplier
FROM stack
LIMIT 0 , 30