ورود

View Full Version : (numeric(18,2 یعنی چه؟



bftarane
یک شنبه 22 اردیبهشت 1392, 08:27 صبح
سلام.
در مورد فیلدی که نوعش به صورت زیر تعریف شده لطفاً توضیح بدید.
(numeric(18,2
مثلاً اون 2 ظاهراً به معنی این هست که تا 2 رقم اعشار می تونه باشه عددمون.
ولی اون 18 چیه؟
من امتحان کردم مثلاً در خود جدول عدد 0.815 رو وارد کردم اون رو تبدیل به 0.82 کرد.

اگه نخوام عدد اعشاری که وارد می کنم گرد بشه چه نوع داده ای باید انتخاب کنم؟ من با 2012 Sql server کار می کنم Decimal به تنهایی رو در نوع های داده پیدا نکردم که بخوام انتخاب کنم.
یه جا هم خوندم نوع float برای ذخیره دقیق اعداد اعشاری مناسب نیست.

NasimBamdad
یک شنبه 22 اردیبهشت 1392, 08:40 صبح
18 یعنی 18 رقم عدد صحیح می تونی بزنی و 2 رفم اعشار .

اگه به اعشار نیاز نداری باید از Int و BigInt استفاده کنید .

برای گرد کردن هم می تونید از خود C# و .. استفاده کنید . توابعی برای گرد کردن اعداد داریم !

hossein_h62
یک شنبه 22 اردیبهشت 1392, 08:46 صبح
سلام
عدد اول (سمت چپ) precision یا دقت هستش که ماکزیمم کل اعدادی که در دو طرف ممیز میتونن ذخیره بشن رو تعریف میکنه، این عدد میتونه بین 1 تا 38 باشه که بصورت پیش فرض روی 18 هستش.
عدد دوم (سمت راست) هم Scale یا همون تعداد رقم اعشاری هست که این رقم از 0 تا مقدار Precision که تعریف کردیم میتونه باشه.اگر میخواین عددتون روند نشه مقدار Scale رو برابر بزرگترین مقدار اعشاری که دارین قرار بدین. مثلا در مثالی که زدین به این صورت میشه : (numeric(18,3

hossein_h62
یک شنبه 22 اردیبهشت 1392, 08:53 صبح
18 یعنی 18 رقم عدد صحیح می تونی بزنی و 2 رفم اعشار .

خیر؛ (numeric(18,2 یعنی 16 رقم عدد صحیح و 2 رقم اعشار.