Я делаю так:
theItem.percentage_complete = CDbl(thePercent)
Но возникает Exception:
An unhandled exception of type 'System.InvalidCastException' occurred in microsoft.visualbasic.dll
Additional information: Cast from string "16.666667" to type 'Double' is not valid.
В чем здесь проблема?
Что посоветуете?
Здравствуйте, <Аноним>, Вы писали:
А>Additional information: Cast from string "16.666667" to type 'Double' is not valid.
Судя по названию сборки — это VB.NET (лучше это указывать в субже)...
Значит, дело в локали. Вероятно, десятичным разделителем является не точка а запятая.
Либо измени настройки на машине, либо установи другую локаль для треда, либо укажи нужную локаль при преобразовании.
Пример установки заданной локали для треда:
Dim culture As CultureInfo = New CultureInfo("ru-RU")
culture.DateTimeFormat.ShortDatePattern = "dd.MM.yyyy"
culture.DateTimeFormat.ShortTimePattern = "HH:mm"
culture.NumberFormat.CurrencyDecimalSeparator = ","
culture.NumberFormat.CurrencyGroupSeparator = " "
culture.NumberFormat.NumberDecimalSeparator = ","
culture.NumberFormat.NumberGroupSeparator = " "
culture.NumberFormat.PercentDecimalSeparator = ","
culture.NumberFormat.PercentGroupSeparator = " "
Thread.CurrentThread.CurrentCulture = culture
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture
Здравствуйте, UL, Вы писали:
UL>Function StrToDouble(ds As String) As Double
UL> ds = Replace(ds, ",", ".")
UL> StrToDouble = CDbl(Val(ds))
UL>End Function
...И если у нас локаль такая что "," используется как разделитель тысяч, то на числе "123,456,769.01" мы получим ошибку.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>