在数据库中要用decimal不能用float 那在程序中呢? 在数据库中要用decimal不能用float 那在程序中呢?要定义一个小数需要用declare @i decimal(18,4)这样吗我试了用declare @i float 好像没影响,大家说呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不要那么绝对,数据库中也可以用float declare 的变量最好与表里的字段类型相同,这样才不会数据精度丢失,也避免不必要的类型转换 对一些精确的数据确实有影响。比如金额,可能需要精确到小数点后多少位,这时必须用decimal类型。这样的话,如果数据越来越多时,对金额汇总时,需要在在SQL中进行汇总,然后在前端程序中用FLOAT类型显示,误差很小。否则汇总金额的误差可能会有上百元。 意思就是把decimal的数据从数据库取出放到float变量进行计算,然后又放进数据库为decimal类型的表里,这样是否有影响?我试了好像没有影响declare @i floatset @i=12.12print @iprint @i*1200print @i*0.123insert into t(f) values(@i*0.123)select * from t 对于 decimal 和 numeric 数据类型,Microsoft® SQL Server™ 将精度和小数位数的每个特定组合看作是不同的数据类型。例如,decimal(5,5) 和 decimal(5,0) 被当作不同的数据类型。在 Transact-SQL 语句中,带有小数点的常量自动转换为 numeric 数据值,且必然使用最小的精度和小数位数。例如,常量 12.345 被转换为 numeric 值,其精度为 5,小数位为 3。从 decimal 或 numeric 向 float 或 real 转换会导致精度损失。从 int、smallint、tinyint、float、real、money 或 smallmoney 向 decimal 或 numeric 转换会导致溢出。默认情况下,在将数字转换为较低精度和小数位数的 decimal 或 numeric 值时,SQL Server 使用舍入法。然而,如果 SET ARITHABORT 选项为 ON,当发生溢出时,SQL Server 会出现错误。若仅损失精度和小数位数,则不会产生错误。float 和 real用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。语法float [ ( n ) ]从 - 1.79E + 308 到 1.79E + 308 之间的浮点数字数据。n 为用于存储科学记数法 float 数尾数的位数,同时指示其精度和存储大小。n 必须为从 1 到 53 之间的值。n 所在范围 精度 存储大小 1-24 7 位数 4 字节 25-53 15 位数 8 字节 Microsoft® SQL Server™ float[(n)] 数据类型对于从 1 到 53 之间的所有 n 值均符合 SQL-92 标准。double precision 的同义词为 float(53)。real从 ?3.40E + 38 到 3.40E + 38 之间的浮点数字数据。存储大小为 4 字节。在 SQL Server 中,real 的同义词为 float(24)。这是微软的帮助,你可以看一下啊 不要那么绝对,数据库中也可以用float float 和 real 用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。decimal这个类型精确!一般选这个 求SQL语句 一个查询(日期有关) SQL語句求問:已知起止日期怎樣列出此范圍內的所有日期? 字段类型null,改成not null,用SQL 跪求请教一个问题 维护别人的项目 sql server中的注释都变成乱码了咋么办 关于手动删除表的行出错 这个sql应该怎么写?急用 数据库有两个文件,删除了一个,附加不了了,帮帮忙 删除SQL Serve中的table sql server 如何计算一个表所占的物理空间是多大 如何查询一段数据的末几位
这样的话,如果数据越来越多时,对金额汇总时,需要在在SQL中进行汇总,然后在前端程序中用FLOAT类型显示,误差很小。否则汇总金额的误差可能会有上百元。
declare @i float
set @i=12.12
print @i
print @i*1200
print @i*0.123
insert into t(f) values(@i*0.123)
select * from t
用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。语法
float [ ( n ) ]从 - 1.79E + 308 到 1.79E + 308 之间的浮点数字数据。n 为用于存储科学记数法 float 数尾数的位数,同时指示其精度和存储大小。n 必须为从 1 到 53 之间的值。n 所在范围 精度 存储大小
1-24 7 位数 4 字节
25-53 15 位数 8 字节
Microsoft® SQL Server™ float[(n)] 数据类型对于从 1 到 53 之间的所有 n 值均符合 SQL-92 标准。double precision 的同义词为 float(53)。real从 ?3.40E + 38 到 3.40E + 38 之间的浮点数字数据。存储大小为 4 字节。在 SQL Server 中,real 的同义词为 float(24)。这是微软的帮助,你可以看一下啊
float 和 real
用于表示浮点数字数据的近似数字数据类型。浮点数据为近似值;并非数据类型范围内的所有数据都能精确地表示。decimal这个类型精确!一般选这个