2014-10-07 150 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