¿Hay alguna manera mejor de analizar el porcentaje para duplicarlo?Porcentaje de parse al doble
Dim Buffer As String = "50.00%"
Dim Value As Double = Double.Parse(Buffer.Replace("%",""), NumberStyles.Any, CultureInfo.InvariantCulture)/100
¿Hay alguna manera mejor de analizar el porcentaje para duplicarlo?Porcentaje de parse al doble
Dim Buffer As String = "50.00%"
Dim Value As Double = Double.Parse(Buffer.Replace("%",""), NumberStyles.Any, CultureInfo.InvariantCulture)/100
La forma en que lo está haciendo parece bueno para mí .
El único punto que tendría cuidado es que su programa asume InvariantCulture. Asegúrate de que esto sea realmente lo que quieres decir. Por ejemplo, podría ser mejor utilizar la cultura predeterminada de la máquina si la cadena proviene de la entrada del usuario en lugar de un protocolo fijo bien definido.
Invariant.Culture es solo para la simplicidad de la muestra. Stackoverflow no tiene entrada de usuario para mi código de muestra :-) –
No estoy familiarizado con VB pero la creación de una función de lo que ya es mejor
pseudo código:
function PercentToDouble(Buffer)
return Double.Parse(Buffer.Replace("%",""), NumberStyles.Any, CultureInfo.InvariantCulture)/100;
endfunction
Es posible que vota por este Framework 4 sugerencia en Microsoft Connect: Extend double.Parse to interpret Percent values
Si el porcentaje es la entrada del usuario a continuación
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
Por qué código el símbolo de porcentaje (%) cuando se podría utilizar : http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.percentsymbol.aspx – rohancragg