为什么decimal.TryParse成功解析类似12,2,2,2的东西

Ben*_*Ben 4 c# parsing decimal

如果我执行以下操作:

string teststring = "12,2,2,2";
decimal testdecimal;
decimal.TryParse(teststring, out testdecimal)
Run Code Online (Sandbox Code Playgroud)

这工作,testdecimal最终成为12222.

这不合理/逻辑上不能解析吗?我很惊讶地看到它有效并且很好奇它背后的逻辑是什么允许这个.

SLa*_*aks 6

默认情况下,TryParse()允许,您所在国家/地区的组分隔符.

为防止这种情况,请传递NumberStyles不包含的内容NumberStyles.AllowThousands.

默认为:

Number   = AllowLeadingWhite | AllowTrailingWhite | AllowLeadingSign | AllowTrailingSign |
           AllowDecimalPoint | AllowThousands,
Run Code Online (Sandbox Code Playgroud)

资源


Dav*_*nan 2

您的文化设置具有,千位分隔符。由于千位分隔符纯粹用于视觉提示,并且不提供有关数字的任何重要信息,decimal.TryParse因此只需忽略千位分隔符。