PDA

View Full Version : سوال: بهترین نوع داده برای مبلغ در c#



mina2010
دوشنبه 02 بهمن 1391, 17:26 عصر
بهترین نوع داده برای مبلغ در سی شارب چه نوعی است لطفا دلیلش رو هم بگید

vahid2112
دوشنبه 02 بهمن 1391, 18:11 عصر
انواع داده های عددی در سی شارپ

98808

Hajivandian
دوشنبه 02 بهمن 1391, 18:28 عصر
سلام،

توی پایگاه داده اس کیو ال سرور مناسب ترین نوع داده برای مقادیر مالی، نوع داده Money هست که معادل اون توی سی شارپ میشه decimal.
اینم منبع حرفم http://msdn.microsoft.com/en-us/library/cc716729.aspx

the king
دوشنبه 02 بهمن 1391, 19:17 عصر
بهترین نوع داده برای مبلغ در سی شارب چه نوعی است لطفا دلیلش رو هم بگید

مبلغ کلا داده اعشاری مهمی یه، حتی کوچکترین خطا در نتیجه محاسبات نباید رخ بده. از اونجایی که بجز decimal سایر
انواع داده ای اعشاری از سیستم ممیز شناور استفاده می کنند خطا های جزئی در نتیجه محاسبات رخ میده، فرضا
هزار تا داده بین 0.0 و 1.0 رو جمع می کنید و جمع کل بجای 1.0 میشه 0.9999999998 یا میشه 1.0000000001
کلا نحوه ذخیره سازی مقادیر در سیستم ممیز شناور تخمینی یه، برای مواردی که حتی کوچکترین تخمین قابل قبول نیست
نباید ازش استفاده کرد، مسائل مالی یکی از این موارده.

hadimtn
شنبه 03 مرداد 1394, 21:16 عصر
سلام.
سوال دوستمون رو تکرار میکنم تا بیشتر در موردش بدونم!
بهترین نوع داده برای ذخیره ی واحد ریالی پول در پایگاه داده چیه و معادل اون در C#‎‎‎؟!
money، currency
یا اصلا int و bigint
شایدم string!

دلیل هم بگین بهتره! دقت بالایی نیازه چون محاسبات مالی با حساسیت باید انجام بشن دیگه!

ناامید
شنبه 03 مرداد 1394, 21:35 عصر
سلام.
برای پول ایران عدد کافی.
میتونید از دسیمال استفاده کنید.
دسیمال تا 79228162514264337593543950335 مقدار رو قبول میکنه!!!!.
یا اگر مقدار دسیمال زیاده بیشترین مقدار داده های مختلف رو بدست بیارید و بستگی به نیازتون استفاده کنید.
با استفاده از MaxValue میتونید بیشترین مقداری رو که داده میتونه قبول کنه رو بدست بیارید:

MessageBox.Show(decimal.MaxValue.ToString());

معادل همین هم decimal است در sql.

دلیل من اینه که به جز متغیری که عدد رو ذخیره کنه به چیز دیگه ای نیاز نیست و برای محاسبات هم کار راحتتری خواهیم داشت.

TeacherMath
شنبه 03 مرداد 1394, 22:18 عصر
بهترین واحد پولی در دیتابیس bigint و در سی شارپ long یا Int64 است. چون فقط قراره بهش اضافه و کم بشه تقسیم توی کار نیست تا به هم بخوره نیازی نیست از داده نا معین float یا double استفاده شود.

hadimtn
یک شنبه 04 مرداد 1394, 04:16 صبح
برای پول ایران عدد کافی.
میتونید از دسیمال استفاده کنید.


هترین واحد پولی در دیتابیس bigint و در سی شارپ long یا Int64 است.

تو همین تاپیک دوستان money رو گفتن و معادل اون در سی شارپ Decimal عنوان شده!
اگه تو پایگاه داده money برابر Decimalئه پس Decimal معادل چیه؟! :لبخندساده:
منظور اینکه چرا باید دو نوع یکسان تعریف بشه؟! !!!!!!

love_m69
یک شنبه 04 مرداد 1394, 08:54 صبح
به هیچ وجه از نوع داده float در دیتا بیس برای مبلغ و مقدار استفاده نکنید. چون شناور است وقتی بخوایم جمعشون کنیم و از اونجایی که هم مقدار و هم مبلغ دارای اعشار می تونن باشد توی محاسبات و یا کنترل موجودی هاتون دچار مغایرت می شین
بهترین نوع در دیتابیس decimal هست که بنا به نیازتون می تونین تعداد ارقام اعشار و صحیحتون رو هم مشخص کنید. در سی شارپ هم بهترین نوع double یا Decimal است.

zayens
یک شنبه 04 مرداد 1394, 12:20 عصر
من توی یک برنامه حسابداری از decimal استفاده کردم
توی sql از money استفاده نکنید
فرمتش بدرد واحدهای ایران نمیخوره