'字符'不是' String'"的成员在VB.NET中

时间:2014-12-30 05:08:00

标签: vb.net decimal rounding

情景描述如下:

在txtDiscountRate.Text中,它的值为" 0.996010500406591"。

在我的编码中,我做到了这一点:

txtDiscountRate.Text = Math.Round(Val(txtDiscountRate.Text.Trim), 6)  'means considering round till 6th digit

由于十进制后的第6位为0,它给出的值为0.99601。但是我想在十进制值中加上一个条件。

因此,如果小数点后的第6位(0或1或2或3或4)和小数点后的第7位可用,则它将循环到第7位。 否则它会绕到第6位。

我从这个站点得到了一个解决方案(如下面的代码所示)来解决这个问题。我试图实现,但下面的代码抛出一个错误:

CInt(Str(1).Char(5))  is showing error this error  -> " 'Char' is not a member of 'String'".

到目前为止,这是我的整个代码:

Dim str() As String = Split(CStr(Dec), ".")

If CInt(Str(1).**Char(5)**) < 5 Then 'It's Char number 5 since it's a zero-based index. So the first number = Index 0.
    txtDiscountRate.Text = Math.Round(Val(txtDiscountRate.Text.Trim), 7)
Else
    txtDiscountRate.Text = Math.Round(Val(txtDiscountRate.Text.Trim), 6)
End If

需要正确的解决方案。

1 个答案:

答案 0 :(得分:0)

我认为以下功能可以帮助您,这是您的解决方案。

Function GetDecimalValue(ByVal value As String) As Decimal
        Dim valueFromDot As String = value.Substring(IIf(value.IndexOf(".") < 0, 0, value.IndexOf(".") + 1))
        If (valueFromDot.Length > 5) Then
            If (CInt(valueFromDot(5).ToString()) < 5 And CInt(valueFromDot(6).ToString()) > 0) Then
                GetDecimalValue = Math.Round(CDec(value), 7)
            Else
                GetDecimalValue = Math.Round(CDec(value), 6)
            End If
        Else
            GetDecimalValue = CDec(value)
        End If
    End Function