SQL服务器轮功能不能正常工作
问题描述:
我正在使用SQL Server 2000和面临轮功能问题像下面的语句工作正常。SQL服务器轮功能不能正常工作
SELECT ROUND(5 * 7.83, 1)
其结果将是39.2
但是,当我从表中获取这些值,它给出39.1,这意味着它截断,不圆了。
SELECT ROUND(rate * qty, 1)
FROM tbl
其结果将是39.1
rate
和qty
列中的数据类型是浮动。将qty
和7.83分别插入到rate
中,然后检查它。我如何解决它?
答
转换表中的值实际,
SELECT ROUND(convert(real,rate)*convert(real,qty),1)
答
你的样品根本查询不反光所涉及的数据类型。
尝试这两个替代:
SELECT ROUND(5 * 7.83, 1)
SELECT ROUND(cast(5 as float) * cast(7.83 as float), 1)
:第二个表格的数据类型相匹配。浮点数据类型不是用于精确的十进制计算,而是使用十进制类型。
What Every Computer Scientist Should Know About Floating-Point Arithmetic
没有失去太多精度在正常的数字,你可以转换为十进制的飞行,迫使人类可理解的小数点算术,例如
SELECT ROUND(cast(rate as decimal(10,5)) * cast(qty as decimal(10,5), 1)
FROM tbl
什么是选择率的输出,从tb1的数量? – 2012-02-27 04:43:13