Есть ли лучший способ проанализировать процент, чтобы удвоить это?Процент анализа удваивается
Dim Buffer As String = "50.00%"
Dim Value As Double = Double.Parse(Buffer.Replace("%",""), NumberStyles.Any, CultureInfo.InvariantCulture)/100
Есть ли лучший способ проанализировать процент, чтобы удвоить это?Процент анализа удваивается
Dim Buffer As String = "50.00%"
Dim Value As Double = Double.Parse(Buffer.Replace("%",""), NumberStyles.Any, CultureInfo.InvariantCulture)/100
, как вы делаете это, кажется, хорошо для меня ,
Единственный момент, о котором я буду заботиться, это то, что ваша программа принимает InvariantCulture. Убедитесь, что это на самом деле то, что вы имеете в виду. Например, было бы лучше использовать культуру по умолчанию для компьютера, если ваша строка поступает из пользовательского ввода, а не из фиксированного четко определенного протокола.
Invariant.Culture - это просто для простоты образца. У Stackoverflow нет ввода пользователем моего кода :-) –
Я не знаком с VB, но создает функцию из него уже лучше
код псевдо:
function PercentToDouble(Buffer)
return Double.Parse(Buffer.Replace("%",""), NumberStyles.Any, CultureInfo.InvariantCulture)/100;
endfunction
Вы можете проголосовать за это .NET Framework 4 предложения на Microsoft Connect: Extend double.Parse to interpret Percent values
Если процент вводимый пользователем, то
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Dim pb As New PictureBox
Dim foo As New gameObj(pb, gameObjType.person)
Dim sInps() As String = New String() {"50.00 %", "51.00%", ".52", "53", ".54%"}
For Each sampleInput As String In sInps
Debug.WriteLine(ConvertPercentToDouble(sampleInput).ToString("n4"))
Next
End Sub
Private Function ConvertPercentToDouble(s As String) As Double
Dim Value As Double
Dim hasPercent As Boolean = s.Contains(System.Globalization.NumberFormatInfo.CurrentInfo.PercentSymbol)
Dim whereIsPC As Integer = Math.Max(s.IndexOf(" "), _
s.IndexOf(System.Globalization.NumberFormatInfo.CurrentInfo.PercentSymbol))
If Double.TryParse(s, Value) _
OrElse Double.TryParse(s.Substring(0, whereIsPC).Trim, Value) Then
If Value > 1 OrElse hasPercent Then Value /= 100
Return Value
Else
Throw New ArgumentException("YOUR ERROR HERE")
End If
End Function
Почему жестко закодировать символ процента (%), когда вы могли бы использовать : http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.percentsymbol.aspx – rohancragg