PDA

View Full Version : حرفه ای: مشکل در مقایسه اعداد اعشاری



masoode
یک شنبه 20 آبان 1397, 16:47 عصر
سلام
من عدد 2 را در متغیری از نوع Real ذخیره کردم. آن را در دیتابیس ذخیره کردم حالا وقتی موقع مقایسه آن عدد ذخیره شده را با عدد 2 مقایسه می کنم برابر نیست!!!!
اگر عدد ذخیره شده در دیتابیس را A فرض کنیم:
If A=2 Then Beep;
اما صدایی در نمی آید علت آن این است که در واقع به جای عدد 2.0000000000 عدد 1.99999999999999 ذخیره شده است!!!
چه کار کنم؟
ظاهرا در زبان C#‎‎ یک دیتاتایپ وجود دارد به اسم Decimal که اعداد اعشاری را در مبنای 10 ذخیره میکند نه مبنای 2 (IEEE-754) !!
آیا دلفی راه حلی برای این مشکل وجود دارد؟
این هم لینک آن مطلب در C#‎
http://barnamenevis.org/showthread.php?480344-%D9%86%D8%AD%D9%88%D9%87-%DB%8C-%D9%85%D9%82%D8%A7%DB%8C%D8%B3%D9%87-%D8%A7%D8%B9%D8%AF%D8%A7%D8%AF-%D8%A7%D8%B9%D8%B4%D8%A7%D8%B1%DB%8C

البته تابع CompareValue در یونیت Math برای این نوع مقایسه وجود داره اما آیا راهی هست که این عدد در دیتابیس (SQL Server) همان شکلی من می خواهم ذخیره بشه؟

یوسف زالی
دوشنبه 21 آبان 1397, 12:37 عصر
سلام
نوع فیلدتون رو در اس کیو ال تغییر بدید
بگذارید decimal و تست کنید

masoode
دوشنبه 21 آبان 1397, 14:47 عصر
چون که از این دستور برای خوندش در دلفی استفاده می کنم مشکل حل نشد!
AdoQuery1.Fields[1].asFloat;