سلام.
من به یه مشکل برخوردم تو بسکام.
کد php:
Dim A As Single, I As Integer
A = -4 ^ 3
Lcd A
اگر اینجوری دستورات رو تایپ کنیم درست جواب میده.و میشه -64
ولی اگر :
کد php:
Dim A As Single, I As Integer
I = -4
A = I ^ 3
Lcd A
اینجوری تایپ کنیم میشه -63.999999 البته توی ورژنهای مختلف هم تست کردم حتی نسخه دمو و کرک نشده 1.11.9.1 که از سایت اصلیش دانلود کردم.
دلیلش چیه؟
اگه متغير A رو هم Integer تعريف كنيم بازم اين مشكل وجود داره يا نه !
يا اينكه متغير I رو Single تعريف كنيم .
فكر مي كنم به خاطر فرمت مختلف متغيرها باشه . چون Single كه به صورت تمام بيتي كه بيت آخر بيت علامته ذخيره مي شه ( معمولي ) . ولي Integer به صورت رياضي و كه چند بيت اول توان و علامت و بقيه بيت ها عدد هستش ذخيره مي شه !
همین الان هر دو جور رو امتحان کردم هر دو تا رو هم integer و هم single کردم بازم نشد.
هیچ جوری نمیشه بهش فهموند که بقیه بیتها رو محاسبه نکنه؟
البته از تابع round که استفاده میکنم درست میشه ولی تو محاسباتم از اعداد اعشاری هم استفاده میکنم که در این صورت باز به هم میریزه.
چه کارش کنم؟
این کد امتحان کن
کد:
If I < 0 Then
A = ((-1) ^ 3) * (abs(I) ^ 3)
Else
A = I ^ 3
End if
اقا اینجوری هم نمیشه چون بیشتر از یک عملیات رو نمیپذیره.
روفتم رو یه IDE دیگه درست شد از همتون ممنونم.
شما هم با Microbasic for AVR کار کنید کرک ورژن 4 هم گیر میاد.
بازم از همتون ممنونم.
سلام
کافی اول برنامه دستور config single رو بنویسید تا تعداد رقم اعشار مشخص بشه
استفاده از دستور fusing هم یه راه کار دیگه است
میتونید از یه متغیر دیگه (مثل long یا... ) استفاده کنید
x تعداد رقم اعشار
مرسی نکته جالبی بود کاش زودتر گفته بودید.من بالا خره با Mikrobasic درستش کردم.