ID tematu: 73437
 |
Kalkulator binarny |
Autor |
Wiadomość |
maciek301
Świeżak

Wersja: Win Office 365
Posty: 1
|
Wysłany: 02-10-2022, 23:10 Kalkulator binarny
|
|
|
Dzień dobry, Eksperci,
potrzebuję przeliczyć liczby z systemu dziesiętnego na system dwójkowy (rozwinięcie binarne) w Excelu. Pomoc Microsoft podaje formułę "DZIES.NA.DWÓJK". Problem w tym, że dla liczb dziesiętnych po przecinku nie chce ona właściwie działać. Potrzebuję przeliczyć np. liczby "10,537109", "4,890625". Proszę o pomoc, jak zrobić to w Excelu.
Z góry dziękuję. |
|
 | ID posta:
420948
|
|
|
 |
|
|
|
xfish
Excel Expert


Wersja: Win Office 2013
Pomógł: 722 razy Posty: 2130
|
Wysłany: 03-10-2022, 06:48
|
|
|
Ta funkcja zamienia tylko część całkowitą.
Bez VBA raczej się nie da.
Tutaj masz funkcję.
Wartości dla funkcji:
liczba którą chcesz zamienić
na jaki system (w twoim wypadku wpisujesz 2)
opcjonalnie ile miejsc po przecinku (przy pominięciu domyślnie 20)
Kod: | Function DecToBaseX(DecIn As Double, Base As Long, Optional FractionLen As Long = 20) As String
Dim whole As Long, frac As Double
whole = Int(DecIn)
DecToBaseX = IIf(whole = 0, "0.", ".")
While whole > 0
DecToBaseX = whole Mod Base & DecToBaseX
whole = whole \ Base
Wend
frac = DecIn - Int(DecIn)
While frac > 0 And FractionLen > 0
frac = frac * Base
DecToBaseX = DecToBaseX & Int(frac)
frac = frac - Int(frac)
FractionLen = FractionLen - 1
Wend
If Right(DecToBaseX, 1) = "." Then DecToBaseX = Replace(DecToBaseX, ".", "")
End Function |
|
_________________ Pozdrawiam xFish |
|
 | ID posta:
420949
|
|
|
 |
|
|
Maciej Gonet
Excel Expert

Wersja: Win Office 365
Pomógł: 2920 razy Posty: 8759
|
Wysłany: 03-10-2022, 09:04
|
|
|
Podam i swoją propozycję. Dotyczy tylko zamiany liczb dziesiętnych na dwójkowe. Też funkcja UDF. Przecinek jako separator dziesiętny. Listing funkcji:
Kod: | Function Frac2bin(num As Double, Optional maxdig As Long = 12) As String
Dim frac As Double, res As String, i As Long
If num < 0 Then Frac2bin = CVErr(xlErrValue): Exit Function
Frac2bin = WorksheetFunction.Dec2Bin(Fix(num))
frac = num - Fix(num)
If frac > 0 And maxdig > 0 Then
res = ","
For i = 1 To maxdig
frac = 2 * frac
If frac >= 1 Then
res = res & 1
frac = frac - 1
ElseIf frac = 0 Then
Exit For
Else
res = res & 0
End If
Next i
Frac2bin = Frac2bin & res
End If
End Function |
Konwersja_ułamka_na_bin.xlsm
|
Pobierz Plik ściągnięto 17 raz(y) 15.98 KB |
|
|
 | ID posta:
420953
|
|
|
 |
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
Strona używa plików cookies.
Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe
|