从指数表示法解析数字

我需要将字符串“ 1.2345E-02”(以指数表示法表示的数字)解析为十进制数据类型,但Decimal.Parse("1.2345E-02")只会引发错误



森栏
浏览 465回答 3
3回答

慕的地6264312

这是一个浮点数,您必须告诉它:decimal d = Decimal.Parse("1.2345E-02", System.Globalization.NumberStyles.Float);

牛魔王的故事

如果您指定,它将起作用NumberStyles.Float:decimal x = decimal.Parse("1.2345E-02", NumberStyles.Float);Console.WriteLine(x); // Prints 0.012345我不能完全确定为什么默认情况下不支持此功能-默认值为use NumberStyles.Number,它使用AllowLeadingWhite,AllowTrailingWhite,AllowLeadingSign,AllowTrailingSign,AllowDecimalPoint和AllowThousands样式。可能与性能有关;我想指定一个指数是相对罕见的。

红糖糍粑

除了指定NumberStyles外,我还建议您使用decimal.TryParse函数,例如:decimal result;if( !decimal.TryParse("1.2345E-02", NumberStyles.Any, CultureInfo.InvariantCulture, out result) ){     // do something in case it fails?}作为NumberStyles的替代方法,只要确定格式,任何人都可以使用特定的集合。例如:NumberStyles.AllowExponent | NumberStyles.Float
打开App,查看更多内容
随时随地看视频慕课网APP