首页 新闻 会员 周边

科学技术法转换成正常数

1
悬赏园豆:10 [已解决问题] 解决于 2011-11-21 14:10

6E-308转换成正常数字 可以不呢?如果可以 该怎么做!

6*Math.Pow(10,-308)自己写成这样 计算出来还是6E-308 

这个报错:(大于或小于Decimal最大数 最小数)Convert.ToDecimal(Decimal.Parse("6E-308", System.Globalization.NumberStyles.Float));

一个土豆一棵青菜的主页 一个土豆一棵青菜 | 菜鸟二级 | 园豆:268
提问于:2011-11-21 10:55
< >
分享
最佳答案
1

是“科学计数法”(scientific notation)吧

收获园豆:6
dudu | 高人七级 |园豆:30994 | 2011-11-21 11:17

恩 恩  

一个土豆一棵青菜 | 园豆:268 (菜鸟二级) | 2011-11-21 11:18

@青蛙王子。: 代码如下:

var number = 6E-308;
var e = 308;
StringBuilder builder = new StringBuilder(e + 6);
builder.Append("{0:0.");
for (int i = 0; i < 308; i++)
{
builder.Append("#");
}
builder.Append("}");
Console.WriteLine(string.Format(builder.ToString(), number));



dudu | 园豆:30994 (高人七级) | 2011-11-21 13:23
其他回答(1)
0

你的报错“大于或小于Decimal最大数 最小数”,那是因为你要转换的数字小于decimal允许的最小数了呗,你用double试试就行了。

double d = Convert.ToDouble("6E-308");

这是-308次幂,这么大的幂表示这个数字特别特别小,这样的数字怎么表示成普通的数字啊?要表示成普通的数字,你前面会看到几百个0,后面才是个数字,这样谁会看?
不过假如你就是不想科学计数法,那我给你个代码,可以把科学计数法的数字转成正常的数字字符串的。看方法:

private static string doubleFormat(Double doubleValue)
{
try
{
string doubleValueStr = doubleValue.ToString();

int eIndex = doubleValueStr.ToUpper().IndexOf("E");
String format = "";
if (eIndex == -1)
{
return doubleValueStr;
}
else
{
string cardinalNumberStr = doubleValueStr.Substring(0, eIndex);
string exponentialStr = doubleValueStr.Substring(eIndex + 1);
if (exponentialStr.StartsWith("+"))
{
exponentialStr = exponentialStr.Substring(1);
}
int exponential = Int32.Parse(exponentialStr);
if (exponential > 0)
{
if ((cardinalNumberStr.Length - 2 - exponential) > 0)
{
format = "#.";
for (int i = 0; i < (cardinalNumberStr.Length - 2 - exponential); i++)
{
format += 0;
}
}
else
{
format = "#.0";
}
}
else if (exponential < 0)
{
format = "0.";

for (int i = 0; i < (cardinalNumberStr.Substring(cardinalNumberStr.IndexOf(".") + 1).Length - exponential); i++)
{
format += 0;
}
}
else
{
format = "#.0";
}
if (format.Length == 2)
{
format += 0;
}
return doubleValue.ToString(format);

}
}
catch (Exception e)
{
}
return "";
}

使用的时候调用就行了

收获园豆:4
LCM | 园豆:6876 (大侠五级) | 2011-11-21 12:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册