logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Złe przeliczanie math w Bascom

smithpl 18 Paź 2011 10:49 1065 4
REKLAMA
  • #1 10039245
    smithpl
    Poziom 15  
    Witam,

    aktualnie borykam się z drobnym kłopotem w działaniach arytmetycznych :-)

    Ni jak matematycznie nie wychodzi poprawnie przeliczanie

    Sytuacja jest taka:

    Wprowadzamy liczbę do 2000
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Wprowadzamy dzielnik
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Uzyskujemy Dawka w wyniku działania Ilosc/cycle
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Wszystko zapisujemy do eepromu
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Następnie działamy na w/w danych pobierając je z pamięci.

    Kod: text
    Zaloguj się, aby zobaczyć kod


    No i wynik otrzymuje 36 ??!!
    Wiem że nie dostane wartości po przecinku ale na tym mi nie zależy.

    wynik to (400/8)*1,81 to 90,5 czyli dawka_temp powinna mieć wartość 90

    Czy ktoś może mi pomóc co jest nie tak?
    Prawdopodobnie kwestia konwersji między typem zmiennych ale już nie wiem jak do tego podejść.
  • REKLAMA
  • Pomocny post
    #2 10039343
    Mundi1970
    Poziom 24  
    Źle definiujesz typ zmiennych. Żeby można wykonywać operacje zmiennoprzecinkowe, typ zmiennych powinien być single lub double.

    Dim Dawka_temp As Single, Dawka As Single
  • REKLAMA
  • #3 10039414
    smithpl
    Poziom 15  
    Kurcze taka drobnica :-)

    Dzis zweryfikuje - DZIĘKI !!
  • REKLAMA
  • #4 10039450
    Mundi1970
    Poziom 24  
    Oczywiście można to zrobić jeszcze inaczej, jeżeli wynik nie musi być dokładny.
    Zamiast mnożenia przez 1.81, można pomnożyć przez 181. A na końcu wynik podzielić przez 100.
  • #5 10039515
    smithpl
    Poziom 15  
    potrzebuje tylko czesc przed przecinkiem wiec w sumie mozna i druga metoda
REKLAMA