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)