Vb.net 使用数字的特定格式字符串

Vb.net 使用数字的特定格式字符串,vb.net,Vb.net,我有一些这种格式的数字需要更改 121.23 12312 1.123 1234.5 如何强制他们使用12.123格式,使其在第二个数字后始终有一个点。这不是字符串格式操作。您需要将数字乘以或除以10,直到它小于100或大于或等于10。例如: Function Transform(ByVal toTransform As Decimal) As Decimal Transform = toTransform If (Transform >= 100) Then

我有一些这种格式的数字需要更改

121.23
12312
1.123
1234.5

如何强制他们使用12.123格式,使其在第二个数字后始终有一个点。

这不是字符串格式操作。您需要将数字乘以或除以10,直到它小于100或大于或等于10。例如:

Function Transform(ByVal toTransform As Decimal) As Decimal
    Transform = toTransform

    If (Transform >= 100) Then
        Do While Transform >= 100
            Transform /= 10
        Loop
    ElseIf (Transform < 10) Then
        Do While Transform < 10
            Transform *= 10
        Loop
    End If
End If
函数转换(ByVal转换为十进制)为十进制
变换
如果(变换>=100),则
变换>=100时执行此操作
变换/=10
环
ElseIf(变换<10)然后
变换<10时执行此操作
变换*=10
环
如果结束
如果结束
或者,这里有一个更通用的版本,您可以使用它获取任意数量的小数位数:

Function Transform(ByVal toTransform As Decimal, ByVal numberOfPlaces As Integer) As Decimal
    Transform = toTransform
    Dim min = 10 ^ (numberOfPlaces - 1)
    Dim max = 10 ^ numberOfPlaces

    If (Transform >= max) Then
        Do While Transform >= max
            Transform /= 10
        Loop
    ElseIf (Transform < min) Then
        Do While Transform < min
            Transform *= 10
        Loop
    End If
End Function
函数转换(ByVal转换为十进制,ByVal numberOfPlaces转换为整数)为十进制
变换
最小尺寸=10^(多个位置-1)
最大尺寸=10^个位置
如果(变换>=最大值),则
变换时执行>=最大值
变换/=10
环
ElseIf(转换<分钟)然后
变换时执行

基本上,它将数字乘以或除以10,使小数点向所需方向移动。直到结果小于或等于该范围内的最大值且大于或等于该范围内的最小值为止。

因此
1.123
应更改为
11.23
?基本字符串操作:去掉所有现有的
,将新字符串拆分为两部分(前两个字符+其他所有字符),然后将这两部分重新合并为一个介于
之间的新字符串。如果您试图“重新格式化”1234.5到12.345,那么这并不是改变格式,而是改变数字的值。请您提供更多关于上下文的详细信息,这是正确的,所有内容都是11.23或12.123等。。这是不是只能用vb.net格式的字符串才能做到?好的,让它在123.12上也能用123456.12等大数字的最好方法是什么?roryap,漂亮的代码,感谢这些精彩的示例。第二个是为我做的。。