PDA

View Full Version : مشکل منطقی در استفاده از تابع SUM



DoDoklak
پنج شنبه 13 بهمن 1390, 12:23 عصر
سلام من در استفاده از این تابع دچار یک مشکل منطقی شدم
به کد زیر توجه کنید




DECLARE @tbl TABLE (Num Float)

INSERT INTO @tbl (Num) VALUES(500)
INSERT INTO @tbl (Num) VALUES(-492.7)
INSERT INTO @tbl (Num) VALUES(-7.3)

SELECT SUM(Num) FROM @tbl



خروجی باید صفر بشه ولی نمیشه به جاش عددی نزدیک به صفر میشه
که میشه 1.15463194561016E-14

ولی اگر اینطور بنویسی صفر میشه



SELECT (500+(-492.7)+(-7.3))

sanay_esh
پنج شنبه 13 بهمن 1390, 12:35 عصر
با سلام خدمت شما
دوست عزیز بدلیل اینکه float یک عدد شناور می باشد شما نمیتوانید از آن در عملیات جمع استفاده کنید
برای اینکه متوجه منظورم شوید میتونی بدین شکل امتحان کنی و نتیجه را ببینی !!!
در این مواقع بهترین کار اینست که شما از نوع Decimal استفاده نمایید
DECLARE @tbl TABLE (Num FLOAT)

INSERT INTO @tbl (Num) VALUES(500)
INSERT INTO @tbl (Num) VALUES(-492.7)
--INSERT INTO @tbl (Num) VALUES(-7.3)

SELECT SUM(Num) FROM @tbl


در ضمن اگر اعداد شناور منفی را ابتدا جمع کنید و با جمع اعداد مثبت شناور جمع نمائید نتیجه را درست خواهید دید موفق باشید