当前位置: 代码迷 >> Sql Server >> round 的返回值的有关问题
  详细解决方案

round 的返回值的有关问题

热度:280   发布时间:2016-04-24 18:35:34.0
round 的返回值的问题
SQL语句如下:
select round('12345678901234.123456789',9) 

这个结果是  :12345678901234.1

这事为什么?不该是:12345678901234.123456789
请大家赐教!!!!!!!
------解决方案--------------------
select round(12345678901234.123456789,9) 
/*

---------------------------------------
12345678901234.123456789

*/

------解决方案--------------------
联机丛书的说明:
numeric_expression 
精确数值或近似数值数据类别(bit 数据类型除外)的表达式。

------解决方案--------------------
改成这样把:

select round(12345678901234.123456789,9)

------解决方案--------------------
联机丛书上说了:返回一个数值,舍入到指定的长度或精度。

你把字符型传进去,本身就有问题
------解决方案--------------------
你的这个数字是字符串,所以会导致一些问题
------解决方案--------------------
问题就在字符串上''
因为sql自动转型是把字符型转成float 型。float型是有有效数字位数的。
select round('12345678901234.123456789',9)
等于
select  round(CONVERT(float,'12345678901234.123456789'),9) ;

你要想最准确,应该严格写成数字或者这么转
select  round(CONVERT(NUMERIC(38,9),'12345678901234.123456789'),9)
  相关解决方案