Ser*_*pia 5 sql sql-server sql-server-2008
我读过我应该用钱,但在今天快节奏的世界里,也许现在已经过时了.
我该怎么用?
Ste*_*ass 13
Papuccino,
除非你确定你计划做的唯一算术是加法和减法,否则我不推荐使用money和smallmoney类型.如果您可能正在处理汇率,百分比等问题,那么您可能会面临这些类型的实际问题.
这里只是一个小例子,告诉你在涉及分割时使用money,decimal和float之间的区别.有可能提出一些示例,其中差异更为显着.
declare @m1 money, @m2 money, @m3 money
declare @d1 decimal(19,4), @d2 decimal(19,4), @d3 decimal(19,4)
declare @f1 float, @f2 float, @f3 float;
set @m1 = 1.00;
set @m2 = 345.00;
set @m3 = @m1/@m2;
set @d1 = 1.00;
set @d2 = 345.00;
set @d3 = @d1/@d2;
set @f1 = 1.00;
set @f2 = 345.00;
set @f3 = @f1/@f2;
select @m3, @d3, @f3;
Run Code Online (Sandbox Code Playgroud)
结果:0.0028 0.0029 0.00289855072463768
根据行业的不同,可能会有一些指导原则或法规来帮助您确定正确的数据类型.没有一个正确的答案.
补充说明:
你是正确的,钱/钱不应该是金钱,但SQL Server(莫名其妙)产生了这样的结果:从两个货币价值的商中键入货币.这是假的,但正如你从下面的例子中看到的那样,这是你得到的,即使它没有意义:
declare @m1 money, @m2 money;
declare @d1 decimal(19,4), @d2 decimal(19,4);
set @m1 = 1.00;
set @m2 = 345.00;
set @d1 = 1.00;
set @d2 = 345.00;
select @m1/@m2, @d1/@d2
Run Code Online (Sandbox Code Playgroud)
结果:0.0028 0.0028985507246376811
类型货币0.0028的结果比正确结果少3-4%.
当然,在很多情况下您需要划分货币值.使用货币类型的危险在于商是错误的类型(并且答案与正确的类型不够接近).需要划分货币的问题示例:
假设您兑换320元,银行给您47.3美元.你获得的汇率是多少?
假设您投资23美元,一年后它的价值为31美元.你的回报率是多少?
这两种计算都需要划分货币值.
Cha*_*ana 12
不,钱应该仍然有用.
| 归档时间: |
|
| 查看次数: |
3363 次 |
| 最近记录: |