100分,关于float字段保留小数的问题
我当前有一个表Table1,一个字段Price(float类型)   
 我尝试插入一些数据   
 insert   into   table1   values(123)      数据库里显示是123.0 
 insert   into   table1   values(123.456)   数据库里显示是123.456 
 insert   into   table1   values(123.4561)   数据库里显示是123.45610000000001   
 这就真的是奇怪了。当我插入不同的数据,它有时候是原样显示,有的时候给我在后面加上一大串莫名其妙的小数。   
 问题1:为什么会出现这种现象,有何规律吗? 
 ====================================================================   
 我尝试用round来截取,但也不行 
 insert   into   table1   values(round(123.456789,2))   结果它竟然显示的是123.459999999999!我彻底晕了   
 问题2:我怎么样做到,在向一个float字段插入数据时,只保留2位小数,其它多余的小数全部截断?(123.456789显示的是123.46)   
 Ps:数据库字段float为固定,不能修改为decimal等其它类型 
------解决方案--------------------Price为什么不用Money类型?   
------解决方案--------------------float类型就是这样的,不影响你的数据,你可以在读出来的时候转换为你想要的格式.
------解决方案--------------------建议LZ使用 Decimal 数据类型,这个类型从名字看就比较直观   
 比如 
 Decimal(12,2) 
 代表整数位是12位,小数位2位 
------解决方案--------------------它竟然显示的是123.459999999999!   
 这个没关系的~交回后台时会变回去的
------解决方案--------------------select convert(varchar(20),cast(price as money),0) 转换后,price 转换前 from table1
------解决方案--------------------用numeric(10,2)格式吧
------解决方案--------------------可以用varchar()类型的
------解决方案--------------------我当前有一个表Table1,一个字段Price(float类型)   
 建议使用decimal(10,2)类型