2015-12-21 199 views
0

我试图让这个程序不仅可以转换正数,也可以转换负数。根据此代码,我可以修改什么,以便将负数十进制数转换为八进制数?另外,如果我还想将未经过舍入的数字转换为二进制数字,我该怎么办?例如321.123为二进制。VBA隐藏十进制和十六进制的负数十进制数

Private Sub Conversion_Click() 
Dim chiffreentrer As Integer 
Dim reste As Integer 
Dim reste2 As String 
Dim chiffreocto As String 

chiffreentrer = CInt(InputBox("Entrez un chiffre decimal:", "Conversion Decimal a Octo")) 
Do While chiffreentrer >= 1 
    reste = chiffreentrer Mod 8 
    reste2 = CStr(reste) 
    chiffreentrer = chiffreentrer \ 8 

    chiffreocto = reste & chiffreocto 
Loop 
MsgBox "Le chiffre en octo est de : " & chiffreocto, , "Conversion Decimal a Octo" 
End Sub 

-

Public Function Division(Nombre As Integer) 


     i = 1 
    j = 1 
      Bla = "" 
     Nbinit = Nombre 
     reste = 0 
ActiveSheet.Cells(i, 1) = Nombre 
      ActiveSheet.Cells(i, 2) = "÷2" 
      ActiveSheet.Cells(i, 2).HorizontalAlignment = xlRight 

    Do 


reste = (Nombre - 2 * Int(Nombre/2)) 

Nombre = Int(Nombre/2) 

Bla = reste & Bla 


i = i + 1 
ActiveSheet.Cells(i, 1) = Nombre 
ActiveSheet.Cells(i, 2) = reste 

Loop While (Nombre > 0) 

     MsgBox "Le nombre " & Nbinit & " est équivalent à " & Bla & " en binaire" 

端功能

回答

1

试试这个:

Private Sub Conversion_Click() 
Dim chiffreentrer As Integer 
Dim reste As Integer 
Dim reste2 As String 
Dim chiffreocto As String 

chiffreentrer = CInt(InputBox("Entrez un chiffre decimal:", "Conversion Decimal a Octo")) 
Do While chiffreentrer >= 1 Or chiffreentrer <= -1 
    reste = chiffreentrer Mod 8 
    reste2 = CStr(reste) 
    chiffreentrer = chiffreentrer \ 8 
    If Left(chiffreocto, 1) = "-" Then chiffreocto = Mid(chiffreocto, 2) 
    chiffreocto = reste & chiffreocto 
Loop 
MsgBox "Le chiffre en octo est de : " & chiffreocto, , "Conversion Decimal a Octo" 
End Sub 
+0

谢谢。我还有另外一个问题,这个代码是否也适用于十进制到二进制转换?我编辑过的问题也显示小数到二进制代码,我该怎么做,这也会转换否定? –

+0

这是一个新问题。如果可以,请将其作为新问题发布,而不是在得到正确答案后修改此问题。我正在开会,你会得到别人更快的回应。 –