دسیمال(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 بسیار پیش می آید که بعد از درج رکورد ، شناسه رکورد جدید را بدست آوریم. برای این منظور کافیست بعد از درج کوئری زیر را اجرا کنید. البته توجه نمایید که برای بدست آوردن شناسه حتما باید در جدول کل...


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

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


تابع IFNULL در MySQL...

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

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

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

1 نظر

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

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

captcha image reload