很抱歉提出一个愚蠢的问题,但是这个问题让我很难过。
SELECT
81234 / 160000 * 100 AS Try1,
CAST((81234 / 160000 * 100) AS float) AS Try2
答案是50.77125,但两个值都返回零。有什么问题?
谢谢,
答案 0 :(得分:7)
尝试使用小数点。
像
这样的东西SELECT
81234 / 160000 * 100 AS Try1,
CAST((81234 / 160000 * 100) AS float) AS Try2,
81234. / 160000. * 100. AS Try3
如果整数被除数除以整数除数,则结果为 截断结果的任何小数部分的整数。
答案 1 :(得分:3)
你是用int实现一个除法
试试这个:
SELECT
cast(81234 as float) / cast(160000 as float) * 100
或
SELECT
81234.00 / 160000.00 * 100
答案 2 :(得分:2)
试试这个
SELECT
81234.00 / 160000 * 100 AS Try1,
CAST((81234.00 / 160000 * 100) AS float) AS Try2
您要划分一个被视为整数的数字。因此,通过添加两个小数,它将转换为十进制数,并显示小数。
在你的情况下,除法81234/160000导致0,乘以100仍为0。
答案 3 :(得分:2)
原因是81234 / 160000
是一个整数除法,所以它返回0,强制它像81234. / 160000
一样浮动,它会起作用
答案 4 :(得分:1)
你正在进行整数除法。 81234/160000给出零。乘以100,它仍为零。
在进行分割之前尝试转换为浮点数。
答案 5 :(得分:1)
更改您的查询,如下所示
SELECT
81234.00 / 160000 * 100 AS Try1,
CAST((81234.00 / 160000 * 100) AS float) AS Try2
** 81234.00 / 160000通过手动通过sql返回0.5077125它会认为是整数分区所以它将返回值0。
答案 6 :(得分:1)
实际上,值81234是整数,如果你设置一个整数,它将返回整数,只有81234一致,才能返回float
SELECT
(CONVERT(FLOAT,81234) / 160000) * 100 AS Try1,
((CONVERT(FLOAT,81234) / 160000 * 100) AS Try2
由于 Ashutosh Arya