首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

100分,关于float字段保留小数的有关问题

2012-02-10 
100分,关于float字段保留小数的问题我当前有一个表Table1,一个字段Price(float类型)我尝试插入一些数据ins

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)类型

热点排行