SQL中的STR函数

时间:2014-12-23 05:32:39

标签: sql sql-server string

SELECT ltrim (STR (1234.34968311,44,16));

结果: 1234.3496831099999000

SELECT ltrim (STR (123.34968311,44,16));

结果: 123.3496831100000000

有人可以帮我理解为什么第一个查询返回与输入不完全相同的varchar值。

1 个答案:

答案 0 :(得分:0)

因为STR在FLOAT数据类型上运行,所以在转换为请求大小的VARCHAR之前,您的十进制数常量将转换为FLOAT。众所周知,FLOAT值是您认为可以获得的数字的近似值:-)所以您最终得到小数点后的不同值。

例如,尝试STR(1234.1,44,16),您将获得1234.0999999999999000。

如果您在http://msdn.microsoft.com/en-us/library/ms189527.aspx阅读了手册,则说float_expression - Is an expression of approximate numeric (float) data type with a decimal point。是的,接近。