执行除法时,Sql 2000浮动不显示小数

时间:2011-04-08 00:47:16

标签: sql-server-2000

我正在执行百分比计算,但它显示整数。我试图从int转换为float,但它仍然显示为整数。如何修复它以显示小数。

我正在使用的计算是100.0 *(1.0 +(floatA /(floatA + floatB)))

这是floatA = 1,floatB = 1的地方所以我应该看到50.0%的值而不是我看到的值为100.

我正在尝试使用小数。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:5)

如果floatAfloatBCOUNT返回的值,那么它们将是整数。

您需要将除法中涉及的至少一个操作数强制转换为float / decimal,以避免表达式中该部分的整数除法。

100.0 * (1.0 + (floatA / (floatA + CAST(floatB as float)))) 

答案 1 :(得分:1)

如果你使用floatA = 1和floatB = 1,那么铅笔和纸算术应该给你150.但那些是整数,而不是浮点数。

但是在大​​多数SQL平台上,这句话

select 1 / (1 + 1)

将返回零。

Integer division truncates

select 100.0 * (1.0 + (1.0/ (1.0 + 1.0)))

应该给你150。

答案 2 :(得分:1)

只需将一个值转换为浮点类型即可解决问题。

select (12345/6789)

上面的例子将返回1,即结果被截断为整数

select (cast(12345 as float)/ cast(6789 as float))
select (12354/ cast(6789 as float))

这些示例将返回1.81838267786125