我写了一个代码
如果输入23E + 20,则输出应为230000000(20个零)
如果4.456E-14是输入,那么4.456000(14个零)应该是输出
但它不能正常工作。 请让我知道我在哪里做错了。 谢谢。
using System;
class test
{
public static void Main()
{
Console.WriteLine("Enter double");
String ext =Console.ReadLine();
if(ext.IndexOf("E")!=-1)
{
int i=ext.IndexOf("E");
ext = ext.Substring(0, i);
for (int j = 0; j < int.Parse(ext.Substring(i + 1, ext.Length - (i + 1))); j++)
ext = ext + "0";
Console.WriteLine(ext);
}
}
Console.ReadKey();
}
}
答案 0 :(得分:0)
你可能超出字符串的范围,记得总是使用i-1索引作为大小为i的数组的最后一个字母(假设数组从0开始,这是大多数语言使用的)。 虽然这只是一个有根据的猜测,因为我不知道C#。
答案 1 :(得分:0)
这可能是解决您问题的更简单方法:
String s = Console.ReadLine();
Double d = Double.Parse(s);
Console.WriteLine(d.ToString("0.#############################################################################"));
答案 2 :(得分:0)
当你将ext子串入时 ext = ext.Substring(0,i) 你正在分配ext =“4.456”并切掉电子零件
当你在for循环中执行ext.Length - (i + 1)时,你得到一个负数索引
试试这个
int noZeroes = Int32.Parse(ext.Substring(i + 1))
ext = ext.Substring(0, i);
string zeroString = new string('0', noZeroes)
ext += zeroString;