2014-10-07 104 views
0

我正在使用VB.NET:获取双精度值的小数位

我正在寻找一个获取double值的小数位数的函数。

我已经有一个函数可以为像“0.01”这样的值做这个,但不是像“1E-6”这样的值,但这就是我所需要的。

有一个类似StackOverflow上(回答)的问题,但对于科学记数法不起作用: Decimal places in a number in VB.NET

需要的功能:

Input: 0.001/Output: 3 
Input: 0.000001 (.ToString() representation: "1E-6")/Output: 5 

有任何人一种优雅的方式(VB.NET/ C#)?

回答

0

我觉得这个功能应该这样做:

Public Function GetDecimalPlaces(ByVal Value As Double, ByVal Culture As System.Globalization.CultureInfo) As Integer 
     Dim val As String = String.Empty 
     Dim valSplitted As String() = Nothing 

     Try 
      val = Value.ToString("0.######################") 

      valSplitted = val.Split(CChar(Culture.NumberFormat.NumberDecimalSeparator)) 
      If (valSplitted.Length = 1) Then Return 0 

      Return valSplitted(1).Length 
     Catch ex As Exception 
      Throw ex 
     End Try 
    End Function