很抱歉问了一个愚蠢的问题,但这让我很困惑。
SELECT
81234 / 160000 * 100 AS Try1,
CAST((81234 / 160000 * 100) AS float) AS Try2
答案是 50.77125,但两个值都返回零。有什么问题?
谢谢,
很抱歉问了一个愚蠢的问题,但这让我很困惑。
SELECT
81234 / 160000 * 100 AS Try1,
CAST((81234 / 160000 * 100) AS float) AS Try2
答案是 50.77125,但两个值都返回零。有什么问题?
谢谢,
尝试使用小数点。
就像是
SELECT
81234 / 160000 * 100 AS Try1,
CAST((81234 / 160000 * 100) AS float) AS Try2,
81234. / 160000. * 100. AS Try3
如果整数被除数除以整数除数,则结果是一个整数,结果的任何小数部分都被截断。
您正在按 int 执行除法
尝试这个:
SELECT
cast(81234 as float) / cast(160000 as float) * 100
或者
SELECT
81234.00 / 160000.00 * 100
尝试这个
SELECT
81234.00 / 160000 * 100 AS Try1,
CAST((81234.00 / 160000 * 100) AS float) AS Try2
您正在划分一个被认为是整数的数字。因此,通过添加两位小数,它被转换为十进制数并显示小数。
在您的情况下,除法 81234 / 160000 得到 0,乘以 100 仍然是 0。
原因是这81234 / 160000
是一个整数除法,所以它返回 0,强制它像浮动一样81234. / 160000
,它会工作
你正在做整数除法。81234/160000 给出零。乘以 100 仍然为零。
在进行除法之前尝试转换为浮点数。
如下更改您的查询
SELECT
81234.00 / 160000 * 100 AS Try1,
CAST((81234.00 / 160000 * 100) AS float) AS Try2
** 81234.00 / 160000 通过 sql 手动返回 0.5077125 它会认为是整数除法,因此它将返回值 0。
实际上,值 81234 是整数,如果您指定一个整数,它将返回整数,只有将 81234 放入浮点数将返回浮点数
SELECT
(CONVERT(FLOAT,81234) / 160000) * 100 AS Try1,
((CONVERT(FLOAT,81234) / 160000 * 100) AS Try2
谢谢阿舒托什艾莉亚