将带有指数表示法的数字从字符串转换为双精度或十进制
有没有一种快速方法将指数表示法的数字(例如:“0.5e10”或“-5e20”)转换为十进制或双精度?
更新:我发现从指数中解析数字符号,但除非我指定一种文化,否则这些示例对我不起作用。
解决方案:
double test = double.Parse("1.50E-15", CultureInfo.InvariantCulture);
Is there a fast way to convert numbers with exponential notation (examples: "0.5e10" or "-5e20") to decimal or double?
Update: I found Parse a Number from Exponential Notation but the examples won't work for me unless I specified a culture.
Solution:
double test = double.Parse("1.50E-15", CultureInfo.InvariantCulture);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您的文化使用
.
作为小数点分隔符,则只需double.Parse("1.50E-15")
即可。如果您的文化使用其他内容(例如
、
),或者您想确保您的应用程序在每台计算机上都以相同的方式运行,则应使用InvariantCulture
:If your culture uses
.
as the decimal separator, justdouble.Parse("1.50E-15")
should work.If your culture uses something else (e.g.
,
) or you want to make sure your application works the same on every computer, you should useInvariantCulture
:标准
double.Parse
或decimal.Parse
方法在这里完成工作。示例:
另请参阅 MSDN 文章解析数字字符串< /a> 了解更多信息。只要为
Parse
方法指定了NumberStyles.AllowExponent
选项(默认情况下为double
),解析此类字符串就可以工作美好的。注意:正如提问者所指出的,例如“e10”的指数表示法并不适用于所有文化。然而,指定 en-US 文化可确保其有效。我怀疑
CultureInfo.InvariantCulture
也应该能解决问题。The standard
double.Parse
ordecimal.Parse
methods do the job here.Examples:
Also, see the MSDN article Parsing Numeric Strings for more information. As long as the
NumberStyles.AllowExponent
option is specified to theParse
method (which it is by default fordouble
), parsing such strings will work fine.NB: As the questioner points out, the exponential notation of "e10" for example does not work in all cultures. Specifying en-US culture however ensures that it works. I suspect
CultureInfo.InvariantCulture
should also do the trick.@Noldorin 是正确的尝试这个代码:
@Noldorin is correct try this code:
Math.Round做得好的话,它会重新渲染数字,以便将其删除,以下是如何使用它:
the Math.Round does it well, it will reder the number so that will remove, here is how to use it: