因为在这里要为商品进行打折
那么就会出现小数位数,但要求不出现小数位,当有小数位的时候自动
取大于当前float的整数
如 11.1 => 12 ; 11.9 => 12
谢谢PS:
如果我想要取到5角的这样的话又要怎么办比如
11.1 => 11.5 11.9 => 12谢谢
那么就会出现小数位数,但要求不出现小数位,当有小数位的时候自动
取大于当前float的整数
如 11.1 => 12 ; 11.9 => 12
谢谢PS:
如果我想要取到5角的这样的话又要怎么办比如
11.1 => 11.5 11.9 => 12谢谢
解决方案 »
- 急!sql2000日志传送中已经升级和降级服务器,为什么原备用数据库仍然是只读状态?
- 高分(100,目前能给的最多分了)挑战一下本版块的高手,select 多表复合查询并进行数据统计。
- 非常简单的问题,这个符号是什么意思?
- 如何解決一個問題:存儲過程中有一個局部變量長度要超過varchar(4000)
- 给20分问一个简单到家的问题:Win2003能装什么版本的SQL?2000装不上啊.
- sql server 2000各个版本的区别。
- sql中的除0问题
- 插入多个表的事务处理,该如何做?谢谢
- SQL Server登录问题。
- 请问在PB(PowerBuilder)中如何修改系统时间和日期?
- 关于保存分辨率到注册表的问题
- 求解两条SQL语句是什么意思
返回小于或等于所给数字表达式的最大整数。语法
FLOOR ( numeric_expression )参数
numeric_expression精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。 返回类型
返回与 numeric_expression 相同的类型。示例
此示例说明正数、负数和货币值在 FLOOR 函数中的运用。SELECT FLOOR(123.45), FLOOR(-123.45), FLOOR($123.45)结果为与 numeric_expression 数据类型相同的计算值的整数部分。 --------- --------- -----------
123 -124 123.0000
返回大于或等于所给数字表达式的最小整数。语法
CEILING ( numeric_expression ) 参数
numeric_expression是精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。返回类型
返回与 numeric_expression 相同的类型。示例
下面的示例显示使用 CEILING 函数的正数、负数和零值。 SELECT CEILING($123.45), CEILING($-123.45), CEILING($0.0)
GO下面是结果集:--------- --------- -------------------------
124.00 -123.00 0.00 (1 row(s) affected)
如果我想要取到5角的这样的话又要怎么办比如
11.1 => 11.5 11.9 => 12 这个得自己判断了,没有专门的函数.
------- -------
124 123(1 row(s) affected)
返回大于或等于所给数字表达式的最小整数。 select CEILING (11.1),CEILING (11.9)
----- -----
12 12(所影响的行数为 1 行)
PS:
如果我想要取到5角的这样的话又要怎么办比如
11.1 => 11.5 11.9 => 12 select CEILING (11.1*2)/2,CEILING (11.9*2)/2
------------- -------------
11.500000 12.000000(所影响的行数为 1 行)
PS:
如果我想要取到5角的这样的话又要怎么办比如
11.1 => 11.5 11.9 => 12
as
BEGIN
declare @output int
select @output=floor(@input+1.0)
if (@input<0)
select @output=floor(@input)
RETURN @output
END根据实际修改,不过负数应该用不上吧。
RETURNs varchar(20)
AS
BEGIN
DECLARE @s varchar(20)
IF @flag=1
SET @s=cast(ceiling(@x) AS varchar(20))
ELSE
SET @s=cast(CASE WHEN @x-floor(sign(@x)*@x)>0.5 THEN ceiling(@x) ELSE
sign(@x)*(floor(sign(@x)*@x)+0.5) END AS varchar(20)) RETURN @s
END
go
SELECT dbo.getnumber(23.0043,2)--23.5
@amt decimal(22,2) --- 输入的数
,@int_1 decimal(22,2)) --- 怎么进位
returns decimal(22,2)
as
BEGIN
if(@int_1>1)
set @amt=0
else if(@amt-floor(@amt)>@int_1)
set @amt=floor(@amt)+1
else if (@amt-floor(@amt)<=@int_1 and @amt-floor(@amt)<>0 )
set @amt=floor(@amt)+@int_1
RETURN @amt
END
select dbo.round_1(11.1,0.5)select dbo.round_1(11.9,0.5)=================================---------------------------------------
11.50(1 行受影响)
---------------------------------------
12.00(1 行受影响)
如果我想要取到5角的这样的话又要怎么办比如
11.1 => 11.5 11.9 => 12 ALTER FUNCTION [dbo].[Getzhekou](@input float) RETURNS float
as
BEGIN
declare @output float
select @output=round(@input)
if @output<@intput
select @output=@output+0.5
RETURN @output
END
create function round_1(
@amt decimal(22,2)
,@int_1 decimal(22,2))
returns decimal(22,2)
as
BEGIN
if(@int_1>1)
set @amt=0
else if(@amt-floor(@amt)>@int_1)
set @amt=floor(@amt)+1
else if (@amt-floor(@amt)<=@int_1 and @amt-floor(@amt)<>0 )
set @amt=floor(@amt)+@int_1
RETURN @amt
END
select dbo.round_1(11.1,0.5)select dbo.round_1(11.9,0.5)
select CEILING (11.1*2)/2,CEILING (11.9*2)/2
--11.1 => 12 ; 11.9 => 12
select ceiling(11.1)
select ceiling(11.9) --11.1 => 11.5 11.9 => 12
declare @i numeric(8,2)
set @i=11.1
select case when ROUND(@i,0)>@i then ROUND(@i,0) else floor(@i)+0.5 enddeclare @i numeric(8,2)
set @i=11.9
select case when ROUND(@i,0)>@i then ROUND(@i,0) else floor(@i)+0.5 end
返回大于或等于所给数字表达式的最小整数。 语法
CEILING ( numeric_expression ) 参数
numeric_expression 是精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。 返回类型
返回与 numeric_expression 相同的类型。 示例
下面的示例显示使用 CEILING 函数的正数、负数和零值。 SELECT CEILING($123.45), CEILING($-123.45), CEILING($0.0)
GO 下面是结果集: --------- --------- -------------------------
124.00 -123.00 0.00 (1 row(s) affected)