View Full Version : سوال: تغییر اعداد اعشاری اکسس در دلفی
u.2u.4u
یک شنبه 07 آذر 1389, 09:56 صبح
باسلام خدمت دوستان و اساتید. امیدوارم شادکام باشید.
بنده یک دیتابیس اکسس دارم که یکی از فیلدهای آن از نوع single است. اعداد این فیلد در خود اکسس به درستی نشان داده می شوند. اما زمانی که با استفاده از دستور:
Edit_baha.Text :=FloatToStr(unit1.dm1.query_nBaha.FieldByName('ba ha').AsSingle)
یا هر شکل دیگه ای از این دستور مثلا asstring یا اشکال دیگه این فیلد را در یک تکست باکس می خونم عدد به شکل دیگری در دلفی نمایش داده می شه برای مثال عدد 45.3 به شکل 45.2999992370605 نمایش داده می شه!!!
این مشکل چرا بوجود می یاد و چگونه باید حلش کنم؟
از راهنماییهاتون متشکرم.
vcldeveloper
یک شنبه 07 آذر 1389, 10:16 صبح
اعداد اعشاری در محاسبات کامپیوتری هیچ وقت دقت 100% ندارند، بلکه سعی میشه متناسب با نوع متغیر، و فضای اختصاص داده شده به آن، نزدیک ترین عدد ممکن به عدد اعشاری مربوطه تولید بشه. شما باید برای محاسبات اعشاری خودتان یک حد از دقت را لحاظ کنید، یعنی مشخص کنید که مثلا تا فلان مقدار از اعشار مورد نیاز شما ست، و اعداد با دقت بالاتر باید به آن حد مورد نظر شما رند بشند. اگر فیلد رو برای نگهداری مقادیر مالی استفاده می کنید، حتما نوع اش را به Currency تغییر بدید که اعشارش ثابت هست.
برای مورد فوق هم باید از تابع FormatFloat (http://www.delphibasics.co.uk/RTL.asp?Name=FormatFloat)استفاده کنید، و مشخص کنید که دلفی تا چند رقم اعشار را باید در هنگام تبدیل به string برای شما حفظ کند.
khoshblagh
دوشنبه 08 آذر 1389, 11:47 صبح
با سلام خدمت دوستان
من با همان ساختار بانکی و فیلدی که در پست یک عنوان شده است فیلدی در بانک اکسس دارم. در آن اعداد اعشار بدرستی نشان داده میشود ولی در فرم بدرستی نشان داده نمیشود. فرضا اگر در فیلد عدد 32.15% نمایش داده میشود در فرم برنامه عدد 032 نشان داده میشود.از کد زیر استفاده کردم . متشکرم
procedure TfrmSabtProject.edtDarsadChange(Sender: TObject);
var
Float:Extended;
begin
float:=StrToFloat(edtDarsad.Text);
edtDarsad.Text:=FormatFloat('##.##',Float);
end;
vcldeveloper
سه شنبه 09 آذر 1389, 01:44 صبح
من با همان ساختار بانکی و فیلدی که در پست یک عنوان شده است فیلدی در بانک اکسس دارم. در آن اعداد اعشار بدرستی نشان داده میشود ولی در فرم بدرستی نشان داده نمیشود. فرضا اگر در فیلد عدد 32.15% نمایش داده میشود در فرم برنامه عدد 032 نشان داده میشود.از کد زیر استفاده کردم .
من کدی که نوشتید را تست کردم، بدون مشکل کار کرد، و عدد اعشاری مربوطه را به درستی فرمت بندی کرد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.