如果表已经建好,可以在查询语句中用函数 round(X,2) 转换,X为字段,后面的数字为长度,你要几位就填几。
select title , ROUND(click/charge,4)from table
where date<'2007-7-7 00:00:00'
ROUND()是四舍五入
float本身保存的就是近似值,因为你后面有e-06这样的字符,这个其实也是数字的一部分,这么看,不管你怎么存小数位都是不够的,比如这个3.90104e-06,翻译过来应该是0.00000390194,你估计float的话要怎么写,他是8位的精度,这里来看最好就是0.0000039也就这样了,我想就算这个也不是你要的吧。所以个人觉得办法就是换一个数据类型,最简单的就是double(我估计16位的精度应该够了吧,不过他和float一样,存一个近似值,你可以试试写成double(16,14)试试,如果还不行,那就只能用decimal了),如果还是进位,那就用decimal(65位的定点数,怎么算都够了。)
如果还不行就祭出终极大招字符型,这个总没有问题,当然如果你还要计算,那就最好别用这个。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)