11

对于正在转换为浮点数的 SQL int,如何设置浮点数的精度?

这是我想截断到小数点后两位或三位的选择:

AVG(Cast(e.employee_level as Float))avg_level,

谢谢!

4

2 回答 2

24

在 TSQL 中,您可以为float指定两种不同的大小,24 或 53。这会将精度分别设置为 7 位或 15 位。

如果您只想截断一组小数位数,则可以使用ROUND,即:

ROUND(AVG(CAST(e.employee_level as float)), 3)
于 2012-06-20T19:27:19.480 回答
3

作为一般规则,您不能为浮点数指定小数点后的位数。浮点数据类型存储与任何给定值最接近的浮点近似值。最接近的浮点近似值不太可能具有您想要的位数。尽管您可以在第三个数字之后抑制每个数字,但这只会改变值的外观,而不是值本身。

整数是另一回事。整数——存储、转换或强制转换为浮点数据类型——将精确存储在一个大范围内。浮点数据类型不必为整数存储任何小数单位。

我建议,尽管对你来说最好的做法是

  • 如果不需要小数单位,请避免将整数转换为浮点数,或者
  • 如果确实需要小数单位,则将整数转换为十进制或数字,或者
  • 完全在应用程序代码中处理显示问题。
于 2012-06-20T19:43:59.750 回答