Skip to main content
 首页 » 编程设计

c#之使用正则表达式获取指数值

2024年02月01日23jillzhang

我有这样的字符串:

strings s = "1.0E-20" 

有没有办法使用正则表达式从中只得到 -20? 我试过这个:

(([1-9]+\.[0-9]*)|([1-9]*\.[0-9]+)|([1-9]+))([eE][-+]?[0-9]+)?  

这让我在 group5 中得到了 e-20,但仍然不仅仅是 -20。

请您参考如下方法:

使用Regex处理文本,使用Math(s)处理数字:

Math.Log10(Convert.ToDouble("1.0E-20")) // returns -20 

要确保您的字符串输入是有效的 double,请使用 TryParse:

double d, result = 0.0; 
if (Double.TryParse("1.0E-20", out d)) 
{ 
    result = Math.Log10(d); 
} 
else 
{ 
    // handle error 
} 

此外,如果您想从输入中获取 1.0(乘数):

var d = Convert.ToDouble("1.0E-20"); 
 
var exponent = Math.Log10(d); 
 
var multiplier = d / exponent;