PDA

View Full Version : مبلغ قابل پرداخت رو چطور رند میکنین؟



Developer Programmer
پنج شنبه 01 مهر 1389, 22:52 عصر
فرض کنین، مبلغ فاکتور شده 4196 تومن.
میخوام کاری کنم که این عدد رو به یه عدد قابل پرداخت برحسب پول رایج کشور تبدیل کنه. مثلا 4196 تومن رو به 4200 تومن تبدیل کنه

salehbagheri
پنج شنبه 01 مهر 1389, 23:33 عصر
كافيه يه مقداري رو به عنوان پايه در نظر بگيري كه در حسابهاي خورده ريز معمولاً 100 رو پايه ميگيرن، در خريدهاي بزرگ و گران ميتونيد 1000 رو پايه بگيريد.


Dim Result As Integer = 100 * Math.Round(4196/100)


پ.ن: اين رو به صورت دستي نوشتم و تست نكردم، بنابراين ممكنه در تبديل Math.Round به مشكل بخوريد. در اينصورت ميتونيد قبلش Math.Round رو به Integer تبديل كنيد.

Developer Programmer
جمعه 02 مهر 1389, 09:33 صبح
كافيه يه مقداري رو به عنوان پايه در نظر بگيري كه در حسابهاي خورده ريز معمولاً 100 رو پايه ميگيرن، در خريدهاي بزرگ و گران ميتونيد 1000 رو پايه بگيريد.از کمکی که کردین و پاسخ سریعی که دادین، بی نهایت سپاسگذارم.

فقط واسه خرید کلان، تا چه حد مبلغ مد نظرتونه؟ برای رستوران، ممکنه چنین خریدی اتفاقی بیافته؟

Developer Programmer
جمعه 02 مهر 1389, 10:28 صبح
دوست خوبم لطفا یه لحظه با دقت به این عکس نگاه کن

http://www.shiaupload.ir/images/34657603568684330929.png

همونطور که می بینی، محاسبه مبلغ قابل پرداخت بر حسب فرمولی که شما گفتین درست انجام میشه ولی SQL مبلغ رو خیلی بزرگ میکنه.
از اونجایی که من فقط مبالغ جزئی فاکتور رو در SQL نگه میدارم و به هنگام نمایش در GridView ، کلیه محاسبات رو از طریق Query انجام میدم، می ترسم اون چیزیکه SQL حساب میکنه با اونچیزی که برنامه به دست میاره متفاوت باشه.

شما راه حلی پیشنهاد میکنین؟

salehbagheri
جمعه 02 مهر 1389, 12:10 عصر
ولی SQL مبلغ رو خیلی بزرگ میکنه.

خيلي بزرگ ميكنه؟ يعني چي؟

تو عكس بجاي 25300 شده 25200 كه نشون ميده 100 واحد كمتر از اون چيزي هست كه بايد باشه.

در كد شما در قسمت When دوم فكر كنم يك اشكالي وجود داشته باشه.

من كه دقيقاً نفهميدم مشكل شما كجاست!

Developer Programmer
جمعه 02 مهر 1389, 12:50 عصر
در كد شما در قسمت When دوم فكر كنم يك اشكالي وجود داشته باشه.
فرض کن قراره 3% مالیات روی فاکتور بیایم.
من در اون قسمت به مبلغ فاکتور اون 3% رو اضافه میکنم و بعد طبق فرمول شما، Round می کنم.

درد اینجاست که SQL Server و دات نت هر دو توسط مایکروسافت نوشته شدن منتها نحوه محاسبه Round در دو محیط، متفاوت از همه.
از صبح دارم اینترنت رو میگردم و چند کد که با محاسبه ریاضی سعی میکنن، این دو محاسبه رو یکسان کنن رو دلنود کردم لیکن همه کدها عدد 25296 رو به 25300 گرد میکنن در حالیکه SQL حاضر نیست بیخیال عدد 25200 بشه !