sql 2005 money小数点问题

xwspider 2009-10-14 07:31:52
declare @m money
set @m=12.568
print @m

结果是 12.57
会自动四舍五入啊,如果必须用money类型不用float类型,精确到小数点3位 各位高人有啥方法》?
...全文
197 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
7761098 2009-10-14
  • 打赏
  • 举报
回复
那个是打印值,实际计算的存储的都是四位,没关系的,如果报表显示的话可以convert一下再显示
bancxc 2009-10-14
  • 打赏
  • 举报
回复
输出的时候拿cast转换一下就可以了
money本身可以保存4位小数,
xwspider 2009-10-14
  • 打赏
  • 举报
回复
你想以下2亿的交易额 要不要确到“厘”。数目很庞大的
sgtzzc 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sgtzzc 的回复:]
引用楼主 xwspider 的回复:
declare @m money
set @m=12.568
print  @m

结果是 12.57
会自动四舍五入啊,如果必须用money类型不用float类型,精确到小数点3位  各位高人有啥方法》?


money一般精确到分就可以了,小数点第三位就是“厘”了,不用算那么清楚吧

如果真要这么计较,就像楼各位大侠说的,用dec(18,3)吧
[/Quote]
sgtzzc 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用楼主 xwspider 的回复:]
declare @m money
set @m=12.568
print  @m

结果是 12.57
会自动四舍五入啊,如果必须用money类型不用float类型,精确到小数点3位  各位高人有啥方法》?
[/Quote]

money一般精确到分就可以了,小数点第三位就是“厘”了,不用算那么清楚吧

如果真要这么计较,就像楼主各位大侠说的,用dec(18,3)吧
bancxc 2009-10-14
  • 打赏
  • 举报
回复
哪个值 @m?
他本是好像是小数点4位的 但是打印出来就是2位
xwspider 2009-10-14
  • 打赏
  • 举报
回复
楼上 要把这个值储到变量里啊
bancxc 2009-10-14
  • 打赏
  • 举报
回复
这样可以

declare @m money
select @m=12.568
print cast(cast(@m as decimal(18,4)) as nvarchar(20))

--12.5680
bancxc 2009-10-14
  • 打赏
  • 举报
回复
我的怎么可以啊
create table tb(a money)

insert into tb select 1.222

select * from tb

a
---------------------
1.2220
华夏小卒 2009-10-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fredrickhu 的回复:]
你这不是为难人么 直接用  decimal多好
[/Quote]
--小F-- 2009-10-14
  • 打赏
  • 举报
回复
你这不是为难人么 直接用 decimal多好
bancxc 2009-10-14
  • 打赏
  • 举报
回复
不知道 估计不行
xwspider 2009-10-14
  • 打赏
  • 举报
回复
其他类型不考虑 就用money类型有没有什么方法?
华夏小卒 2009-10-14
  • 打赏
  • 举报
回复
用decimal 吧

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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