将带有指数表示法的数字从字符串转换为double或decimal
有没有一种快速的方法将数字转换为指数表示法(例如:“0.5e10”或“-5e20”)为十进制或双精度?
更新:我发现从指数表示法解析数字,但除非我指定了一种文化,否则这些例子对我不起作用。
解:
double test = double.Parse("1.50E-15", CultureInfo.InvariantCulture);
如果您的文化使用.
作为小数分隔符,只需double.Parse("1.50E-15")
可以了。
如果您的文化使用其他内容(例如),或者您希望确保您的应用程序在每台计算机上的工作方式相同,则应使用InvariantCulture
:
double.Parse("1.50E-15", CultureInfo.InvariantCulture)
标准的double.Parse
或decimal.Parse
方法可以在这里完成工作。
例子:
// AllowExponent is implicit var number1 = double.Parse("0.5e10"); Debug.Assert(number1 == 5000000000.0); // AllowExponent must be given explicitly var number2 = decimal.Parse("0.5e10", NumberStyles.AllowExponent); Debug.Assert(number2 == 5000000000m);
另请参阅MSDN文章Parsing Numeric Strings以获取更多信息。 只要为Parse
方法指定NumberStyles.AllowExponent
选项(默认情况下为double
),解析此类字符串就可以正常工作。
注意:正如提问者指出的那样,例如“e10”的指数符号在所有文化中都不起作用。 然而,指定en-US文化可确保其有效。 我怀疑CultureInfo.InvariantCulture
也应该这样做。
@Noldorin是正确的尝试此代码:
string str = "-5e20"; double d = double.Parse(str); Console.WriteLine(str);
Math.Round做得很好,它将重新编号以便删除,以下是如何使用它:
上述就是C#学习教程:将带有指数表示法的数字从字符串转换为double或decimal分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
Math.Round(Double.Parse("3,55E-15"),2)
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1023578.html