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

[Bascom]Zaokrąglanie liczb funkcjami ROUND i INT

fliper_katrill 20 Mar 2010 01:25 8476 14
  • #1 7854843
    fliper_katrill
    Poziom 20  
    Witam kolegów!
    Mam taki problem, na początek troszkę teorii:
    ROUND
    Przeznaczenie:
    Zwraca liczbę zaokrągloną do najbliższej wartości całkowitej.

    Składnia:
    zmienna = ROUND( wartość )

    gdzie:
    zmienna - dowolna zmienna typu Single, do której wpisana będzie wynik działania funkcji,
    wartość - liczba którą całkowita część powinna być zwrócona.

    Opis:
    Funkcja dokonuje zaokrąglenia podanej wartości do najbliższej wartości całkowitej. Jeśli część ułamkowa będzie mniejsza niż 0.5 zwracana będzie tylko część całkowita. Jeśli natomiast będzie większa – zwracana będzie część całkowita powiększona o jeden.

    INT
    Przeznaczenie:
    Zwraca całkowitą cześć podanej liczby.

    Składnia:
    zmienna = INT( wartość )

    gdzie:
    zmienna - dowolna zmienna, do której wpisana będzie całkowita część podanej liczby,
    wartość - liczba której całkowita część powinna być zwrócona.

    Opis:
    Część ułamkowa to wszystkie liczby znajdujące się po kropce z prawej strony. Część całkowita to ta znajdująca się przed kropką.
    Dla przykładu liczba 1234.567 posiada część całkowitą: 1234 i ułamkową: 567.

    No i teraz kod który powinien działać a nie działa:
    
    Dim Co2_w As Single
    Dim Co2 As Single
    ...
     Co2 = Round(co2_w)    
    ...
    


    liczba rzekomo zaokrąglona ma w obu przypadkach zastosowań postać xxxxx.0
    Co robię nie tak?
  • #2 7855028
    Dżyszla
    Poziom 42  
    Ale Round zwraca liczbę całkowitą, a nie zmiennoprzecinkową. Nie ma sensu przypisywać jej do zmiennej typu single.

    Skoro już teoria była, to zabrakło jej ważnego wskazania - działania funkcji Round przy wartości x.5. Tutaj, w zależności od kompilatora, metody spotyka się następujące (pod względem popularności): Amerykańska - zaokrąglane w górę, jeśli liczba przed przecinkiem jest parzysta, lub w dół dla nieparzystych (istnieje też odwrotność tej reguły); Druga - zawsze w górę; Trzecia - zawsze w dół; Czwarta - może być zastosowany element losowości.
  • #3 7855518
    Konto nie istnieje
    Poziom 1  
  • #4 7855853
    fliper_katrill
    Poziom 20  
    To może koledzy mają jakiś inny sposób na zamianę liczby z postaci zmiennoprzecinkowej w całkowitą?
  • Pomocny post
    #5 7855930
    Konto nie istnieje
    Poziom 1  
  • #6 7856056
    fliper_katrill
    Poziom 20  
    To odpowiem może wymijająco (bo nie do końca kojarzę różnicę) , że nie mam mieć kropek i po kropce nic ;p
  • #7 7856152
    janbernat
    Poziom 38  
    "Niezgodnie z Helpem BASCOMa, ale działa."
    Chyba zgodnie.
    Część ułamkowa będzie odcięta.
    A fliper_katrill-owi chyba chodzi o wyświetlanie.
  • #8 7856247
    fliper_katrill
    Poziom 20  
    tak o wyświetlanie :)
  • #9 7856269
    janbernat
    Poziom 38  
    To sięgnij po" fusing" dla single i "format" dla reszty.
  • #10 7856399
    Konto nie istnieje
    Poziom 1  
  • #11 7856467
    fliper_katrill
    Poziom 20  
    to tak podsumowując jaka jest moja potrzeba:
    obliczenia odbywają się na singlach ja potrzebuję WYŚWIETLIĆ wynik w postaci dokładnie 5 cyfr XXXXX bez kropek i części ułamkowych a czy one będą zaokrąglane czy obcinane to już mniejsza o to :)

    chciałbym najszybszym sposobem uzyskiwać zapis np:

    00055
    01342
    00002
    12345

    zawsze 5 znaków

    (teraz myślę, uwzględniając Wasze posty, o fusing, wcześniej chciałem tylko 1,12,345,5644 bez zer, problemem było wyświetlanie części ułamkowych i kropek których nie chcę)
  • #12 14419288
    andrzej_krk
    Poziom 10  
    Odgrzewam kotleta.

    Jeżeli potrzebne jest wyświetlenie tylko części całkowitej zmiennej na np. wyświetlaczu LCD to proponuję:

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #13 14419530
    Konto nie istnieje
    Konto nie istnieje  
  • #14 14420089
    andrzej_krk
    Poziom 10  
    Od tego jest to forum, ażeby głupio nie pytać "jak to zrobić" tylko skorzystać z czyichś doświadczeń. W zbyt małej liczbie słów napisałem czego ja szukam i co polecam na przyszłość.

    Wracając do mojego postu. Ja szukałem w Bascomie możliwości pozbycia się części ułamkowej liczby, tak aby wyświetlić tylko część całkowitą na LCD - tak tu trafiłem.

    Przykładowo zmienna 123.456 do przekonwertowania na postać bez przecinków (wycięcie cyfr po przecinku).

    Uwielbiam te docinki na elektrodzie. Pewnie kolego powyżej humor Ci się poprawił, prawda? Ale nie ripostuj już - szkoda Twojego cennego czasu i do niczego to nie prowadzi.

    Moderowany przez dondu:

    Kolega nie zauważył uśmieszku jaki niveasoft zamieścił? Cenimy sobie tutaj dobrą atmosferę, a jej przejawem jest czasami humor, który należy prawidłowo rozumieć.



    P.S. Post powyżej zedytowany.
  • #15 14420436
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA