以下代码应返回-1十进制值,但返回0。我在做错什么吗?
decimal validity = -1;
validityStr = "-1";
decimal.TryParse(validityStr, NumberStyles.AllowDecimalPoint,
CultureInfo.InvariantCulture, out validity);
预期输出:
-1
实际输出:
0
答案 0 :(得分:30)
您忘了告诉TryParse开头的符号没问题
decimal validity = -1;
var validityStr = "-1";
decimal.TryParse(validityStr,
NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign,
CultureInfo.InvariantCulture,
out validity);
答案 1 :(得分:6)
此方法返回时,如果转换成功,则包含与s中包含的数值等效的十进制数;如果转换失败,则包含零。。如果s参数为null或Empty,不是有效格式的数字,或者表示小于MinValue或大于MaxValue的数字,则转换失败。此参数通过uininitialized传递;结果中最初提供的任何值都将被覆盖。
由于转换失败,有效性变为0。为确保转换有效,您应添加NumberStyles。AllowLeadingSign