为了账号安全,请及时绑定邮箱和手机立即绑定

从指数表示法解析数字

从指数表示法解析数字

森栏 2019-10-11 10:19:09
我需要将字符串“ 1.2345E-02”(以指数表示法表示的数字)解析为十进制数据类型,但Decimal.Parse("1.2345E-02")只会引发错误
查看完整描述

3 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

这是一个浮点数,您必须告诉它:


decimal d = Decimal.Parse("1.2345E-02", System.Globalization.NumberStyles.Float);


查看完整回答
反对 回复 2019-10-11
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

如果您指定,它将起作用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样式。可能与性能有关;我想指定一个指数是相对罕见的。


查看完整回答
反对 回复 2019-10-11
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

除了指定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


查看完整回答
反对 回复 2019-10-11
  • 3 回答
  • 0 关注
  • 461 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信