问题
在进行以下语句后:
SELECT name, grade AS 原始分数, grade*1.2 AS 折算后分数 FROM pbl.users
结果显示为:
为什么在MYSQL中53*1.2会等于63.599999999999999994?
之后在Excel中导入csv数据,得到以下结果:
为什么在Excel中又显示正常呢?
猜测
可能与数据类型和编码语言有关。
1. 原来grade的数据类型是varchar。
尝试改变grade数据类型,改为int,成绩显示正常。
所以可能是varchar类型的数字进行运算时,不同于INT类型,存储的可能是一堆类似二进制的数字,与数据类型内部的存储和计算有关
2. 记事本打开csv文件,仍显示为63.599999999999999994,而在Excel中是Unicode编码。
可能Unicode又会将varchar数据类型存储的一对数据重新计算,或者干脆是四舍五入的计算?
解答
1.在插入数据前加入N',既可以强制转换为UTF编码,就不会出现乱码。