English 中文(简体)
页: 1 服务器,分机
原标题:SQL Server, division returns zero
  • 时间:2009-11-03 10:12:11
  •  标签:

此处采用Im法,例如:

 PRINT @set1
 PRINT @set2

 SET @weight= @set1 / @set2;
 PRINT @weight

结果是:

47
638
0

我很想知道,为什么它把<代码>0而不是0,073667712退回。

最佳回答

1. 要么宣布第1组和第2组为浮动物,而不是作为计算的一部分,将其划入浮动:

SET @weight= CAST(@set1 AS float) / CAST(@set2 AS float);
问题回答

当你只使用某一司的惯性时,你就会陷入愤怒。 当你使用(至少一个)双轨或浮动时,你将获得点分(以及你希望得到的答复)。

因此,你

  1. declare one or both of the variables as float/double
  2. cast one or both of the variables to float/double.

不仅把乱分类的结果翻一番:该司已经作为乱葬司进行,因此已经丢失了伤员背后的人数。

简言之,分裂的底线为1.0(或像你想要的那么多 places)

PRINT @set1 
PRINT @set2 
SET @weight= @set1 / @set2 *1.00000; 
PRINT @weight

因为它引起愤怒。 你们需要宣布这些浮点号码或缩略号,或在计算中投放。

如果您宣布为浮动或变式形式,将显示

页: 1

仅限

E.g:

declare @weight float;

SET @weight= 47 / 638; PRINT @weight

Output : 页: 1

如果你想要产出的话

页: 1.页: 173667712

E.g

declare @weight float;

SET @weight= 47.页: 1页: 1页: 1页: 1页: 1页: 1页: 1页: 1页: 1 / 638.页: 1页: 1页: 1页: 1页: 1页: 1页: 1页: 1页: 1; PRINT @weight

在服务器中,尽管结果应是浮标,但还是直接划分了2个编造流。 以下例子说明:

--1--
declare @weird_number_float float
set @weird_number_float=22/7
select @weird_number_float

--2--
declare @weird_number_decimal decimal(18,10)
set @weird_number_decimal=22/7 
select @weird_number_decimal

--3--
declare @weird_number_numeric numeric
set @weird_number_numeric=22/7 
select @weird_number_numeric

--Right way

declare @weird_number float
set @weird_number=cast(22 as float)/cast(7 as float)
select @weird_number

仅最后一部分将归还3,14285714285714人。 尽管第2组有正确的精确定义,但结果为3 000。

 CAST(@set1 AS float)
 CAST(@set2 AS float)

convert(float,@set1)
convert(float,@set2)
                    

First convert into float then apply operat或





相关问题
热门标签