sto cercando di analizzare le stringhe che possono avere un decimale. Sto usando Int32.TryParse
ma non sembra funzionare.TryParse non funziona quando si cerca di analizzare un numero decimale a un Int
Qui è la mia funzione in cui cerco di analizzare:
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;
}
Ed ecco il mio test di unità che sta fallendo
[Fact]
public void TestParseIntWithDecimal()
{
string provided = "28.789";
int expected = 28;
int? actual = _parser.ParseInt(provided);
Assert.NotNull(actual);
Assert.Equal(expected, actual);
}
Quando eseguo il mio test di unità, null
viene restituito da ParseInt
e Non capisco perché. Pensavo che TryParse
potesse analizzare i numeri decimali in numeri interi.
Si potrebbe anche solo attorno al numero di prima, quindi è un numero intero ... –
ragazzo, questo è come le domande dovrebbero essere. Semplice, con codice funzionante che può essere testato. Bello. – Jonesopolis
Nella mia risposta ormai rimosso ho confuso '' AllowThousands' con AllowDecimalPoint', dove il primo può lasciare 'int.Parse()' analizzare i numeri con una virgola (a seconda della cultura). In alcune culture, la virgola è il separatore decimale. Si _does_ funziona se le cifre decimali contengono solo zeri (come [documentato] (https://msdn.microsoft.com/en-us/library/zf50za27 (v = vs.110) aspx)): http: // Ideone .com/stQ9GY. – CodeCaster