C# 科学计数法转换成数字

本文介绍了一个用于判断输入字符串是否符合科学计数法格式的方法,并将其转换为十进制数的过程。该方法首先检查字符串中是否存在特定的符号,然后通过正则表达式验证基数的有效性,并最终完成科学计数法到十进制数的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/// <summary>
/// 判断输入的数是否是科学计数法。如果是的话,就会将其换算成整数并且返回,否则就返回false。
/// </summary>
/// <param name="num"></param>
/// <param name="CompleteNum"></param>
/// <returns></returns>
private bool ChkNum(string num, ref decimal CompleteNum)
{
bool result = false;
bool resultSymbol = num.Contains("*");
bool result0 = num.Contains("^");
if ((resultSymbol == true) && (result0 == true))
{ //当数字中有*和^的时候,进行下面的判断
int IntSymbol = num.IndexOf("*");
int Symbol0 = num.IndexOf("^");
if (((Symbol0 - IntSymbol) == 3))
{//当*在^前面的时候
string numA = num.Substring(0, IntSymbol);//截取*号前面的数字(基数);
string numB = num.Substring(IntSymbol+1, Symbol0 - IntSymbol-1);//截取10;
string numC = num.Substring(Symbol0+1, num.Length - Symbol0-1);//获得幂次数
Regex regNum0 = new Regex(@"^(\-|\+)?\d+(\.\d+)?$");
Regex regNum2 = new Regex(@"^-[1-9]\d*$|^[1-9]\d*$");
if ((regNum0.IsMatch(numA)) && (numB == "10") && (regNum2.IsMatch(numC)))
{
decimal dcNumA;
decimal.TryParse(numA,out dcNumA);
decimal dcNumC;
decimal.TryParse(numC, out dcNumC);//将幂次数转换成decimal类型
decimal zhengshu = 10;
if (dcNumC > 0)
{//当幂次数为整数的时候
for (int i = 0; i < dcNumC - 1; i++)
{
zhengshu *= 10;
}
}
else
{//当幂次数为负数的时候
for (int i = 0; i < Math.Abs(dcNumC) + 1; i++)
{
zhengshu /= 10;
}
}
CompleteNum = dcNumA * zhengshu;
result = true;
}
else
{
result = false;
}
}
else
{
result = false;
}
}
else
{
result = false;
}
return result;
}

转载于:https://www.cnblogs.com/denny-x/p/9034446.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值