【发布时间】:2015-11-04 08:45:09
【问题描述】:
在 sql server 中,当我选择 1 / 2 时,它返回 0 而不是 0.5
这是为什么?
不应该所有除法都返回一个十进制值吗? 有没有可以设置让它正常分割的设置?
我在 c# 中注意到了同样的情况
这背后的逻辑是什么?
【问题讨论】:
-
截断。整数除法。
-
现实生活中没有有限的精度数据类型。大多数编程环境会或需要对任意精度数据类型进行特殊处理。更不用说,在现实生活中,我们可以轻松处理非终止小数。
-
为什么更改类型比使用相同类型但丢弃其余部分更正确?如果您希望计算并保留小数位,请使用小数。
-
@GuidoG - “除法的结果不能存储到 int 中” - 4/2 可以非常清楚地存储在
int中。是否应根据具体情况决定数据类型? -
那么1/7的结果是什么?
标签: sql sql-server