【发布时间】:2015-11-18 00:49:20
【问题描述】:
我正在尝试解析可能有小数的字符串。我正在使用Int32.TryParse,但它似乎不起作用。
这是我尝试解析的函数:
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;
}
这是我失败的单元测试
[Fact]
public void TestParseIntWithDecimal()
{
string provided = "28.789";
int expected = 28;
int? actual = _parser.ParseInt(provided);
Assert.NotNull(actual);
Assert.Equal(expected, actual);
}
当我运行单元测试时,null 从 ParseInt 返回,我不明白为什么。我以为TryParse 可以将十进制数解析为整数。
【问题讨论】:
-
你也可以先将数字四舍五入,所以它是一个整数......
-
男孩,问题应该是这样的。简单,带有可以测试的工作代码。不错。
-
在我现在删除的答案中,我将
AllowThousands与AllowDecimalPoint混淆了,前者可以让int.Parse()用逗号解析数字(取决于文化)。在某些文化中,逗号是小数点分隔符。如果小数位仅包含零(如documented),它确实工作:ideone.com/stQ9GY。