Fa کنترل تعداد ارقام اعشار حاصل تقسیم

mahdigh

Member
چطور میشه تعداد ارقام اعشار حاصل تقسیم رو در mmb کنترل کرد؟
مثلا تعیین کنیم که نتیجه تا 5 رقم اعشار باشه
 
آخرین ویرایش:

the_king

مدیرکل انجمن
چطور میشه تعداد ارقام اعشار حاصل تقسیم رو در mmb کنترل کرد؟
مثلا تعیین کنیم که نتیجه تا 5 رقم اعشار باشه

روش اول با منطق ریاضی :

یه تابع به اسم INT هست که عدد اعشاری رو به صحیح گرد می کنه، خوب ما می تونیم از این تابع کمک بگیریم.
INT در واقع یک فیلتره که قسمت اعشاری رو حذف می کنه، حالا اگه ما یک عدد اعشاری رو قبل از فیلتر کردن
صد برابر کنیم چه اتفاقی می افته؟ دو رقم اعشاری اش به صحیح تبدیل میشه و از فیلتر عبور می کنه.
بعدا می تونیم مجددا تقسیم بر صد اش کنیم تا دوباره به بخش اعشاری برگردند.

مثلا تقسیم عدد a بر b با 4 رقم اعشاری :
کد:
a=1
b=3
c=INT(10000*(a/b))/10000

حالا می تونیم این چند رقم اعشاری با یک متغیر مثل n نشون بدیم (مجبوریم عملگر توان رو پیاده سازی کنیم) :
کد:
a=1
b=3
n=4
x=1
For i=1 To n
  x=x*10
Next i
c=INT(x*(a/b))/x

روش دوم با تبدیل به رشته :

ما می تونیم یک مقدار عددی رو با تابع CHAR به رشته تبدیل کنیم، در ضمن می تونیم موقعیت نقطه اعشار
رو با تابع POS پیدا کنیم. بعد می تونیم طول اون رشته رو با تابع StrDel یا StrCopy طوری کم کنیم تا فقط
یک تعداد رقم بعد از اون نقطه در رشته باقی بمونه. نهایتا هم رشته حاصل رو به عدد بر می گردونیم :
کد:
a=1
b=3
n=4
c=a/b
c$=CHAR(c)
i=POS('.',c$)
If (i > 0) Then
  i=i+n
  c$=StrCopy(c$,1,i)
End
c=VAL(c$)
 

xxabasxx

New Member
سلام
برای روش اول با منطق ریاضی میشه مثال بزنید و بیشتر توضیح بدید
من این تابع رو برای ورودی adc میکرو و تبدیل آن به یک عدد قابل قبول و استفاده آن برای فرمان دادن به پایه های میکرو نیاز دارم
من میخوام به متغیر از نوع float که تعداد اعشارش خیلی زیاد هست رو به یک عدد اعشاری دو رقمی تبدیل کنم
مثلا عدد2.555555روبه 2.56 تبدیل کنم
ممنون
 

the_king

مدیرکل انجمن
سلام
برای روش اول با منطق ریاضی میشه مثال بزنید و بیشتر توضیح بدید
من این تابع رو برای ورودی adc میکرو و تبدیل آن به یک عدد قابل قبول و استفاده آن برای فرمان دادن به پایه های میکرو نیاز دارم
من میخوام به متغیر از نوع float که تعداد اعشارش خیلی زیاد هست رو به یک عدد اعشاری دو رقمی تبدیل کنم
مثلا عدد2.555555روبه 2.56 تبدیل کنم
ممنون
کد:
x = 2.55555
y =  INT((x + 0.005) * 100) / 100
Message("","y")
 

xxabasxx

New Member
ممنون از پاسختون دوست من
اما یک مشکل من در برنامه نویسی برای آی سی avr عدد ثابتی ندارم متغیری از نوع float دائما در حال تغیر هست این متغیر رو دقیقا چطور باید محاسبه کنم
که خروجی دقیقا همون چیزی بشه که من میخوام
با نرم افزار کدویژن برناممو مینویسم
ممنون
 

the_king

مدیرکل انجمن
ممنون از پاسختون دوست من
اما یک مشکل من در برنامه نویسی برای آی سی avr عدد ثابتی ندارم متغیری از نوع float دائما در حال تغیر هست این متغیر رو دقیقا چطور باید محاسبه کنم
که خروجی دقیقا همون چیزی بشه که من میخوام
با نرم افزار کدویژن برناممو مینویسم
ممنون
این کدی که در CodeVision می نویسید چه ارتباطی با Multimedia Builder داره؟
 

xxabasxx

New Member
توی نت خیلی دنبال جواب سوالم گشتم اما چیزی پیدا نکردم،فکر کردم که این روش رو هم امتحان کنم
من دنبال یه تابع یا معادله هستم تا بتونم اعداد اعشاری رو به دورقم اعشار تبدیل کنم و گرد کنم والبته با زبان ++c
ورودی ارقام اعشاری من متغیر هست و البته ارغام اعشاری بزرگ رو هم داره
ممنون
 

the_king

مدیرکل انجمن
توی نت خیلی دنبال جواب سوالم گشتم اما چیزی پیدا نکردم،فکر کردم که این روش رو هم امتحان کنم
من دنبال یه تابع یا معادله هستم تا بتونم اعداد اعشاری رو به دورقم اعشار تبدیل کنم و گرد کنم والبته با زبان ++c
ورودی ارقام اعشاری من متغیر هست و البته ارغام اعشاری بزرگ رو هم داره
ممنون
این انجمن مختص برنامه Multimedia Builder ئه و زبان اسکریپتی اش.
 

جدیدترین ارسال ها

بالا