Nhờ giúp đỡ hàm chuyển số thập phân sang nhị phân (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

NguyenNgocSon

KEEP WALKING
Tham gia
4/4/08
Bài viết
280
Được thích
833
Nghề nghiệp
Ths. Cầu hầm
Nhờ các bác xem giúp em có vấn đề sau:
Em dùng VBA chuyển sang hệ nhị phân như sau
PHP:
Sheet1.Range("F" & i + 1) = WorksheetFunction.Dec2Bin(bosoNN(i), 8)
Nhưng dùng hàm bằng VBA ko trả đúng mong muốn
ví dụ: WorksheetFunction.Dec2Bin(4.4, 8)=00000100 là đúng.
Nhưng dùng VBA nó chỉ trả về 100 ?
Cám ơn !
 
Nhờ các bác xem giúp em có vấn đề sau:
Em dùng VBA chuyển sang hệ nhị phân như sau
PHP:
Sheet1.Range("F" & i + 1) = WorksheetFunction.Dec2Bin(bosoNN(i), 8)
Nhưng dùng hàm bằng VBA ko trả đúng mong muốn
ví dụ: WorksheetFunction.Dec2Bin(4.4, 8)=00000100 là đúng.
Nhưng dùng VBA nó chỉ trả về 100 ?
Cám ơn !

Format Text cho vùng dữ liệu trước bạn à
Ví dụ
Mã:
With Sheet1.Range("F" & i + 1)
  .NumberFormat = "@"
  .Value = WorksheetFunction.Dec2Bin(bosoNN(i), 8)
End With
 
Upvote 0
Xin chân thành cám ơn bác
Em có cái hàm này tải trên GPE về:
Mã:
'---- Ham chuyen doi so thap phan sang nhi phan
Function DECBIN(number) As String
Dim bin As String
Do While number > 0
m = number - 2 * Int(number / 2)
number = Int(number / 2)
bin = m & bin
Loop
DECBIN = bin
End Function
Giờ em muốn thêm cái tính năng để cho nó giống với cái hàm Dec2bin của Excel ấy.
Nhưng chưa mò ra
 
Upvote 0
Xin chân thành cám ơn bác
Em có cái hàm này tải trên GPE về:
Mã:
'---- Ham chuyen doi so thap phan sang nhi phan
Function DECBIN(number) As String
Dim bin As String
Do While number > 0
m = number - 2 * Int(number / 2)
number = Int(number / 2)
bin = m & bin
Loop
DECBIN = bin
End Function
Giờ em muốn thêm cái tính năng để cho nó giống với cái hàm Dec2bin của Excel ấy.
Nhưng chưa mò ra
Kết hợp thêm hàm Format nữa là được thôi
Ví dụ thế này:
Mã:
Function DECBIN(ByVal number, Optional ByVal Places As Long = 1) As String
  Dim bin As String
  Do While number > 0
    m = number - 2 * Int(number / 2)
    number = Int(number / 2)
    bin = m & bin
  Loop
  DECBIN = Format(Val(bin), String(Places, "0"))
End Function
 
Upvote 0
Hình như có phát sinh lỗi bác ah?
Em thử test nó ra cả số 2 ?
 
Upvote 0
Ví dụ:
BINDEC(1.95884346961975,9)=000000002
Ý thứ 2 em nhận.

Tức là hàm mà bạn sưu tầm bị sai, đúng không?
Vầy thì xài cái khác:
Mã:
Function D2B(ByVal Num As Long, Optional ByVal Places As Long = 1) As String
  Dim qt As Long, rd As Long, Tmp As String
  qt = Num
  Do
    rd = qt Mod 2
    qt = Int(qt / 2)
    Tmp = rd & Tmp
  Loop Until qt = 0
  D2B = Format(Val(Tmp), String(Places, "0"))
End Function
 
Upvote 0
Yes. Cám ơn bác nhiều lắm.
Bác ndu đã nghe tới thuật toán tối ưu di truyền bao giờ chưa ah?
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom