菜鸟提问!!!奇怪了,为什么这个公式算出来老是0.00啊??

Nicholasqpl 2006-07-20 04:06:17
declare @c numeric(10,2)
declare @qtyin int
declare @qtyout int
declare @TV numeric(10,2)

set @qtyin = 2673
set @qtyout = 1373
set @TV = 11531.8

select @c = (1373/2673) * @TV * 100

print @c



-----------------------
结果:0.00
...全文
190 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yongyupost2000 2006-07-20
  • 打赏
  • 举报
回复
declare @c numeric(10,2)
declare @qtyin int
declare @qtyout int
declare @TV numeric(10,2)

set @qtyin = 2673
set @qtyout = 1373
set @TV = 11531.8

set @c =(convert(numeric(10,2), @qtyout)/@qtyin )* @TV * 100

print @c

或者
declare @c numeric(10,2)
declare @qtyin int
declare @qtyout int
declare @TV numeric(10,2)

set @qtyin = 2673
set @qtyout = 1373
set @TV = 11531.8

set @c =( @qtyout/(convert(numeric(10,2),@qtyin ))* @TV * 100

print @c


或者

declare @c numeric(10,2)
declare @qtyin numeric(10,2)
declare @qtyout int
declare @TV numeric(10,2)

set @qtyin = 2673
set @qtyout = 1373
set @TV = 11531.8

set @c =(convert(numeric(10,2), @qtyout)/@qtyin )* @TV * 100

print @c

结果为:
592336.75

原因int类型与int类型计算,得到int类型,(1373/2673)得到小数为0.51...现于为整数类型,结果为0,要想得到小数,那只有将其一个整数类型转为numerice(10,2),SQL运算时将结果以numeric(10,2)保存

jetdw 2006-07-20
  • 打赏
  • 举报
回复
declare @c numeric(10,2)
declare @qtyin int
declare @qtyout int
declare @TV numeric(10,2)

set @qtyin = 2673
set @qtyout = 1373
set @TV = 11531.8

select @c = (1373/2673) * @TV * 100

print @c
或者
declare @c numeric(10,2)
declare @qtyin int
declare @qtyout int
declare @TV numeric(10,2)

set @qtyin = 2673
set @qtyout = 1373
set @TV = 11531.8

select @c = (cast (1373 as decimal)/2673) * @TV * 100

print @c
playwarcraft 2006-07-20
  • 打赏
  • 举报
回复
int/int型要小心...
最好1.0*a/b 來代替a/b
lxzm1001 2006-07-20
  • 打赏
  • 举报
回复
declare @c numeric(10,2)
declare @qtyin int
declare @qtyout int
declare @TV numeric(10,2)

set @qtyin = 2673
set @qtyout = 1373
set @TV = 11531.8

select @c = (1373*1.0/2673) * @TV * 100

print @c
lxzm1001 2006-07-20
  • 打赏
  • 举报
回复
declare @c numeric(10,2)
declare @qtyin int
declare @qtyout int
declare @TV numeric(10,2)

set @qtyin = 2673
set @qtyout = 1373
set @TV = 11531.8

select @c = (1373/2673) * @TV * 100

print @c

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧