爲什麼當我將值爲「22.882」的字符串轉換爲double時,使用Dbl()會失去精度並轉換爲2288.2?VB.Net String to double
我必須使用double,因爲我使用System.Web.UI.WebControls.Unit (請參閱http://msdn.microsoft.com/en-us/library/ctewx7ch.aspx)的構造函數。
爲什麼當我將值爲「22.882」的字符串轉換爲double時,使用Dbl()會失去精度並轉換爲2288.2?VB.Net String to double
我必須使用double,因爲我使用System.Web.UI.WebControls.Unit (請參閱http://msdn.microsoft.com/en-us/library/ctewx7ch.aspx)的構造函數。
沒有明顯的理由爲什麼它會值更改爲2288.2
,但如果它實際上爲22882.0
結束了,那麼你只是使用不使用期爲小數separtor文化。
你只需要指定一個文化確實使用期爲小數分隔:
Dim d As Double = Double.Parse(theString, CultureInfo.InvariantCulture)
Dim input As String = "22.882"
If Double.TryParse(input, Globalization.NumberStyles.Float, New Globalization.CultureInfo("en-US"), result) Then
Return result
Else
Return 0D ' Or error
End If
謝謝!全球化.NumberStyles.Float的論點似乎有訣竅。定期的TryParse也導致22882.0的值不正確。 – CodeMonkey 2010-08-18 11:33:45
是否有你爲什麼不使用Convert.ToDouble(串)的原因嗎? – XstreamINsanity 2010-08-18 11:21:14