如何在小数点左边加零?
how to Add zero on the left of decimal number?
此代码用于从 Ascii 转换为十进制,但我无法在(2 位数字)左侧添加零
Dim sText As String
Dim i As Integer
Dim lenText As Integer
sText = TextBox6.Text
lenText = Len(sText)
For i = 1 To lenText
sASC = sASC & CStr(Asc(Mid$(sText, i, 1)))
Next i
m = sASC `
如果我没理解错的话,你想在结果字符串的两位十进制值中用一个零填充,那么你可以这样做:
<HideModuleName>
Public Module StringExtensions
<Extension>
Public Function ToDecimals(ByVal sender As String) As String
Dim sb As New StringBuilder(capacity:=(sender.Length * 3))
For Each c As Char In sender
sb.AppendFormat("{0:000}", Convert.ToInt32(c))
Next c
Return sb.ToString
End Function
End Module
用法:
Dim dec As String = "ABC".ToDecimals()
Console.WriteLine(dec)
这将产生:
065066067
更新
Private Sub ButtonCalc_Click() Handles ButtonCalc.Click
Dim input As String = Me.TextBox1.Text
Me.TextBox2.Text = StringToDecimals(input)
End sub
' Rehusable function.
Public Shared Function StringToDecimals(ByVal str As String) As String
Dim sb As New StringBuilder(capacity:=(str.Length * 3))
For Each c As Char In str
sb.AppendFormat("{0:000}", Convert.ToInt32(c))
Next c
Return sb.ToString
End Function
用一些 linq 替换注释代码
'For i = 1 To lenText
' sASC = sASC & CStr(Asc(Mid$(sText, i, 1)))
'Next i
sASC = sText.
Select(Function(t) String.Format("{0:0000}", Asc(t))).
Aggregate(Function(t1, t2) t1 & "," & t2)
它将重新select你的数字,格式化为总是有[至少] 4 个字符,任何前导额外空格为 0。然后它将结果放在一起(聚合),由一个",".
input: qussai
output: 0113,0117,0115,0115,0097,0105
根据您评论中的其他信息判断,字符串并不是您代码中此时的最佳载体。你有来自 Asc()
的数值,然后你将进行提高到 5 次方的数值运算。最好使用 Asc 值进行数学运算,然后创建一个字符串。这样做以获得预期的结果:
sASC = sText.
Select(Function(t) Math.Pow(Asc(t), 5).ToString()).
Aggregate(Function(t1, t2) t1 & t2)
input: qussai
output: 18424351793219244803572011357187520113571875858734025712762815625
此代码用于从 Ascii 转换为十进制,但我无法在(2 位数字)左侧添加零
Dim sText As String
Dim i As Integer
Dim lenText As Integer
sText = TextBox6.Text
lenText = Len(sText)
For i = 1 To lenText
sASC = sASC & CStr(Asc(Mid$(sText, i, 1)))
Next i
m = sASC `
如果我没理解错的话,你想在结果字符串的两位十进制值中用一个零填充,那么你可以这样做:
<HideModuleName>
Public Module StringExtensions
<Extension>
Public Function ToDecimals(ByVal sender As String) As String
Dim sb As New StringBuilder(capacity:=(sender.Length * 3))
For Each c As Char In sender
sb.AppendFormat("{0:000}", Convert.ToInt32(c))
Next c
Return sb.ToString
End Function
End Module
用法:
Dim dec As String = "ABC".ToDecimals()
Console.WriteLine(dec)
这将产生:
065066067
更新
Private Sub ButtonCalc_Click() Handles ButtonCalc.Click
Dim input As String = Me.TextBox1.Text
Me.TextBox2.Text = StringToDecimals(input)
End sub
' Rehusable function.
Public Shared Function StringToDecimals(ByVal str As String) As String
Dim sb As New StringBuilder(capacity:=(str.Length * 3))
For Each c As Char In str
sb.AppendFormat("{0:000}", Convert.ToInt32(c))
Next c
Return sb.ToString
End Function
用一些 linq 替换注释代码
'For i = 1 To lenText
' sASC = sASC & CStr(Asc(Mid$(sText, i, 1)))
'Next i
sASC = sText.
Select(Function(t) String.Format("{0:0000}", Asc(t))).
Aggregate(Function(t1, t2) t1 & "," & t2)
它将重新select你的数字,格式化为总是有[至少] 4 个字符,任何前导额外空格为 0。然后它将结果放在一起(聚合),由一个",".
input: qussai
output: 0113,0117,0115,0115,0097,0105
根据您评论中的其他信息判断,字符串并不是您代码中此时的最佳载体。你有来自 Asc()
的数值,然后你将进行提高到 5 次方的数值运算。最好使用 Asc 值进行数学运算,然后创建一个字符串。这样做以获得预期的结果:
sASC = sText.
Select(Function(t) Math.Pow(Asc(t), 5).ToString()).
Aggregate(Function(t1, t2) t1 & t2)
input: qussai
output: 18424351793219244803572011357187520113571875858734025712762815625