Ich versuche, Zeichenfolgen zu analysieren, die eine Dezimalzahl haben können. Ich benutze Int32.TryParse
, aber es scheint nicht zu funktionieren.TryParse funktioniert nicht beim Versuch, eine Dezimalzahl zu einem Int zu analysieren
Hier ist meine Funktion, wo ich versuche zu analysieren:
private NumberStyles styles = NumberStyles.Number;
private CultureInfo culture = CultureInfo.CurrentCulture;
public int? ParseInt(string node)
{
int number;
if (Int32.TryParse(node, styles, culture.NumberFormat, out number))
{
return number;
}
return null;
}
Und hier ist mein Gerät zu testen, die
[Fact]
public void TestParseIntWithDecimal()
{
string provided = "28.789";
int expected = 28;
int? actual = _parser.ParseInt(provided);
Assert.NotNull(actual);
Assert.Equal(expected, actual);
}
versagt Wenn ich meine Unit-Test laufen, null
von ParseInt
zurückgeführt wird und Ich verstehe nicht warum. Ich dachte TryParse
könnte Dezimalzahlen in ganze Zahlen parsen.
Sie könnten auch gleich um die Zahl zuerst, es ist also eine ganze Zahl ... –
Junge, das ist, wie Fragen sein sollen. Einfach, mit funktionierendem Code, der getestet werden kann. Nett. – Jonesopolis
In meiner jetzt entfernten Antwort habe ich 'AllowThousands' mit' AllowDecimalPoint' verwechselt, wobei ersteres 'int.Parse()' erlaubt, Zahlen mit Kommas zu analysieren (abhängig von der Kultur). In einigen Kulturen ist Komma das Dezimaltrennzeichen. Es funktioniert, wenn die Nachkommastellen nur Nullen enthalten (wie [dokumentiert] (https://msdn.microsoft.com/en-us/library/zf50za27 (v = vs.110) .aspx)): http: // ideone .com/stQ9GY. – CodeCaster