دسیمال(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 در یک نگاه...

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

اجرای دستور UPDATE در MySQL به صورت تابع در PHP...

تابع زیر اجرای دستور UPDATE در پایگاه داده مای اس کیو ال را ساده تر می کند کافیست نام جدول , فیلدها(به صورت آرایه) و در نهایت شرط مورد نظر را در ورودی تابع مشخص سازید تا تابع کوئری مورد نظر را ایجاد ک...

1 نظر

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

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

captcha image reload