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

Jak w BASICu zamienić 23.6443 na 23 i rozdzielić cyfry na zmienne?

xifyh 14 Paź 2007 17:10 1649 7
REKLAMA
  • #1 4378154
    xifyh
    Poziom 20  
    Posty: 513
    Pomógł: 3
    Ocena: 66
    Jak zrobić w basicu, żeby np liczbe 23.6443 zamienić na 23? Jak opuścić liczby po przecinku? I później chcialbym osobno 2 i 3 wpisać do dwóch zmiennych. Jak to zrobić?
  • REKLAMA
  • Pomocny post
    #2 4378481
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    aby pozbyć się tego co po przecinku użyf funkcji INT

    czyli:

    Dim A As  Double
    Dim B As String * 2, B1 As String * 2, B2 As String * 2
    Dim C As Integer, D As Integer
    
    A = 23.6443
    C = INT(A) ' funkcja INT pobiera część całkowitą z liczby czyli w tym przypadku 23



    następnie zamień otrzymaną liczbę na string

    B = Str(C) ' funkcja STR zamienia liczbę C na string


    następnie skorzystaj z funkcji operujących na stringach

    B1 = Left(B, 1) ' funkcja LEFT pobiera tu 1 znak z lewej strony stringu czyli u nas będzie to "2"
    B2 = Right(B, 1) ' funkcja RIGHT robi analogicznie to co LEFT tylko że od prawej strony stringu


    a teraz zamień stringi na liczby

    C = Val(B1) ' funkcja VAL zamienia nasz string na liczbę
    D = Val(b2) ' funkcja VAL zamienia nasz string na liczbę


    czyli na końcu w zmiennej C masz 2 a w zmiennej D masz 3

    ... oczywiście zapewne można to zrobić krócej i szybciej, w ogóle na milion sposobów - podałem akurat taki żeby dobrze go zobrazować

    pozdrawiam i powodzenia
  • REKLAMA
  • #3 4378761
    xifyh
    Poziom 20  
    Posty: 513
    Pomógł: 3
    Ocena: 66
    wielkie dzięki :D
  • REKLAMA
  • #4 4379072
    autoservice
    Poziom 20  
    Posty: 516
    Pomógł: 7
    Ocena: 16
    ...tak z ciekawości, dlaczego chcesz rozdzielać 23 na dwie zmienne?
    Pzdr.
  • REKLAMA
  • #5 4379089
    xifyh
    Poziom 20  
    Posty: 513
    Pomógł: 3
    Ocena: 66
    Zrobiłem termometr na wyświetlaczu lcd alfanumerycznym, a chce teraz zrobić na wyświetlaczach led.
  • #6 4379483
    paluszasty
    Poziom 25  
    Posty: 1113
    Pomógł: 56
    Ocena: 268
    Warto by było ta liczbe jeszcze zaokrąglic wg mnie.
    Pozdrawiam
  • #7 4379503
    xifyh
    Poziom 20  
    Posty: 513
    Pomógł: 3
    Ocena: 66
    Twój post nic nie wnosi, gdybyś jeszcze napisał, że robi się to za pomocą fusing...
  • #8 4379853
    paluszasty
    Poziom 25  
    Posty: 1113
    Pomógł: 56
    Ocena: 268
    Nie znam tej funkcji. Ja zawsze samemu to pisałem.Byla to rada, nie mogłem wkleić jakiegos przykładowego lisningu bo nei bylem u siebie w domu, a nigdy nie wklejak takowych bez sprawdzenia w symulatorze czy działają.
    Wyglądało by to jakos tak:
    
    Dim A As Integer
    Dim B As Byte
    Dim C1 As Byte                                              'cyfra 1
    Dim C2 As Byte                                              'cyfra 2
    Dim D As Single
    D = 23.6443
    A = Int(d)
    D = D * 10
    B = D - A
    If B >= 5 Then
    Incr A
    End If
    C1 = D / 10
    C2 = C1 * 10
    C2 = D - C2
    

    Ale jeśli istnieje funkcia która sama zaokrągla liczbe (o czym nie wiedziałem, ale jakos nei podoba mi sie jej koncepcja bo wyjsciem musi byc string co wg mnie nie jest specjalnie korzystne, nie lubie stringów, co najmniej jesli chodzi o operacja na liczbach:D ), możesz korzytsac z niej
    Pozdrawiam

Podsumowanie tematu

LABEL_AI_GENERATED
W dyskusji omówiono sposób konwersji liczby zmiennoprzecinkowej 23.6443 na jej część całkowitą 23 w języku BASIC, wykorzystując funkcję INT, która usuwa część ułamkową. Następnie zaproponowano konwersję liczby całkowitej na łańcuch znaków (STR) oraz wyodrębnienie poszczególnych cyfr za pomocą funkcji operujących na stringach: LEFT i RIGHT. Ostatecznie cyfry te konwertowano z powrotem na liczby za pomocą funkcji VAL, przypisując je do osobnych zmiennych. W dyskusji pojawiła się także sugestia zaokrąglenia liczby przed rozdzieleniem cyfr. Autor wyjaśnił, że celem jest rozdzielenie cyfr w liczbie 23 w kontekście realizacji termometru na wyświetlaczu LED, zamiast wcześniejszego wyświetlacza alfanumerycznego LCD. Przedstawiono również alternatywny, bardziej manualny sposób rozdzielenia cyfr bez użycia funkcji stringowych, z wykorzystaniem operacji arytmetycznych i warunków.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA