دسیمال(Decimal) بهترین تعریف برای داده های پولی و مقداری در MySQL

۳ سال پیش(به روز شده در ۳ سال پیش) مای اس کیو ال(MySQL) ۱

تعریف نوع Decimal در PHPMyAdmin

تعریف نوع Decimal در PHPMyAdmin

مشخصات تصویر: ۱۵.۴۶ کیلو بایت , ۳۲۸x۲۳۵ پیکسل , jpg , Mysql-phpmyadmin-decimal-currency
جزییات تصویر:
منبع تصویر: اینترنت

اگر قرار است برنامه ای بنویسید که داده های پولی و مقداری را ذخیره کنید و مهمتر اینکه ممکن است اعشاری شود قطعا به این مورد فکر کرده اید که از چه نوع داده ای برای تعریف آنها استفاده کنید. حتما در بررسی اول ، شما نوع Float را پیشنهاد می کنید که این ذاتا اشتباه است چرا که باعث کسر یا افزایش مقدار یا مبلغتان می شود. این حالت منطقی است. بیایید مسئله را عملا امتحان کنیم. فرض بر این است جدولی داریم که شامل ساختار و اطلاعات زیر است:

NumberID
 1.3333  1
 1.33333  2

اگر کوئری زیر را اجرا کنید جواب کمی عجیب خواهد بود:

SELECT SUM(Number) FROM `test`

نتیجه: 2.6666300296783447 در حالی که 2.66663 هدف ماست.

این به خاصیت Float بر میگردد چون مقادیر اعشاری را بصورت تقریبی(توضیح مفصل در وب سایت MySQL) ذخیره میکند و نه بصورت دقیق که به همین خاطر است عددی نزدیک و تقریبی را پس از حاصل جمع نمایش میدهد ولی در مقادیر Decimal(اعداد اعشاری با ممیز ثابت) قسمت اعشار بصورت دقیق ذخیره میشود چون طریقه نگهداری بصورت رشته ای است و طبیعتا سرعت بررسی آنها نسبت به Float کمتر است. پس بعد از تعریف Number به نوع Decimal با ممیز 5 ، اجرای کوئری بالا مقدار 2.66663 را بر می گرداند که یک مقدار دقیق است.

توجه: اگر بیشتر بر روی داده های Float تاکید دارید میتوانید با گرد کردن اعداد از این مشکل فارغ شوید ولی در هر حال درصد اختلاف بسیار پایینی را باید متحمل شوید اما اگر دقت بالای اعشار مد نظر است حتما از نوع Decimal استفاده کنید.

برچسبها

MySQL Decimal Float

صفحات پیشنهادی

گرفتن آخرین شناسه ثبت شده در MySQL بعد از دستور INSERT...

بسیار برای برنامه نویسان پیش آمده که بعد از دستور INSERT شناسه ثبت شده را بدست آورند. شناسه ای که بصورت خودکار یک واحد اضافه می شود و کلید اصلی است. برای این منظور راه های بسیاری پیشنهاد شده اما چون ا...


مثال تصویری برخی از دستورات مهم MySQL...

در این مقاله , تصاویر مختلفی در رابطه با برخی از دستورات مهم MySQL ضمیمه گردیده اند که درک آنها را بسیار راحت تر می کند پیشنهاد می کنیم در صورت تمایل آنها را نزد خود داشته باشید تا در صورت فراموشی به ...


آموزش مقدماتی Transaction در MySQL - همه برای یکی ، یکی برای همه...

بسیاری از برنامه نویسان دوست دارند تا همیشه یک قدم به پیش بروند آنهم سریع و کامل اما همواره همه چیز در یکجا ممکن نیست و نیازمند زمان و آزمون خطاهای متعدد است......


تابع IFNULL در MySQL...

MySQL توابع کاربردی بسیاری دارد که یکی از آنها ifnull می باشد. این تابع زمانی که مقدار ورودی(فیلد) null باشد را با مقدار مشخص شده جایگزین می کند......

1 نظر

gravatar  m
۲ سال پیش - بررسی شده - نوشته شده توسط مهمان

عالی بود ، تشکر

captcha image reload