ورود

View Full Version : نوع ستون مقادیر پولی



shirin_h
سه شنبه 04 دی 1386, 10:36 صبح
سلام
یه سوال کوچولو داشتم
وقتی تو ستونی فقط مقادیر پولی ذخیره می شه از چه dtatype ای استفاده کنم بهتره؟
money یا bigint یا ....؟
وقتی از money استفاده می کنم تو فرمهای windows ام 4 تا 0 جلوش می زاره
که نمی خوام این اتفاق بیفته

shirin_h
سه شنبه 04 دی 1386, 12:19 عصر
کسی راهنماییم نمی کنه؟

JAFO_IRAN
سه شنبه 04 دی 1386, 13:42 عصر
سلام

1. money تا 4 رقم اعشار داره - 19 رقم معنی دار؛ کار کردن باهاش خیلی راحته؛ برای فرمت کردن اعداد و حذف اعشار اضافی باید در client کارهایی انجام بدید - ولی 15 رقم برای ریال ممکنه کافی نباشه - اگر برنامه جدی دارید به این نکته هم توجه کنید

2. bigint به اندازه money جا میگیره ولی اعشار نداره - اگه فقط میخواهید از ریال به عنوان واحد پول استفاده کنید، قاعدتا مشکلی نیست.

3. در برخی از برنامه های مالی، گزارشهایی لازم هستند که واحد اعداد در اونها ریال نیست بلکه مثلا 1000 ریال یا حتی یک میلیون ریاله - اگر این گزارشها را بخواهیم با هر تایپ integerای تهیه کنیم مشکل خواهیم داشت و حتما باید از cast استفاده بشه - البته money هم به صورت داخلی حالت integer داره و از این بابت مزیتی نخواهد داشت...

ارادت

SYNDROME
سه شنبه 04 دی 1386, 17:33 عصر
بهتر برای کارایی بیشتر و عدم ایجاد مشکل در آیند از Float استفاده کنید.
موفق باشید

JAFO_IRAN
سه شنبه 04 دی 1386, 17:49 عصر
سلام

دوست عزیزم، جناب Syndrome؛ استفاده از انواع داده غیردقیق برای اطلاعات مالی (که باید همیشه تا آخرین رقم معنی دار تراز باشند) اصلا توصیه نمیشه.

خیلی ارادت

SYNDROME
سه شنبه 04 دی 1386, 17:54 عصر
استفاده از انواع داده غیردقیق برای اطلاعات مالی (که باید همیشه تا آخرین رقم معنی دار تراز باشند) اصلا توصیه نمیشه.

با احترام
چرا این نوع داده غیر دقیق است.
فکر کنم در حسابهای مالی نگه داشتن بیشتر از 2 رقم اعشار منطقی نیست.
ولی نظر من این است که نباید از Int یا Bigint استفاده شود چون اگر برنامه بخواهد مقدار اعشار دریافت کند مجبور به بازنگری در کل برنامه خواهیم شد.
موفق باشید

JAFO_IRAN
سه شنبه 04 دی 1386, 18:28 عصر
سلام

با کمال ارادت،

1. اصولا float یک approximate data type هستش:

http://msdn2.microsoft.com/en-us/library/aa933110(SQL.80).aspx

2. اگر اعشار بخواهند money بهترین گزینه است.

http://msdn2.microsoft.com/en-us/library/aa933102(SQL.80).aspx

3. برای تعداد اعشار بیشتر از 4 یا تعداد ارقام معنی دار بیشتر از 19 میشه از Decimal هم استفاده کرد - البته مثلا توی دلفی به FmtBCD تبدیل میشه که خودش برای خودش یک پرونده است و راه دست نیست.

ارادت