C# 在C中以指数格式表示双值#
需要以浮点格式和指数格式显示值C# 在C中以指数格式表示双值#,c#,C#,需要以浮点格式和指数格式显示值 如果该值大于或等于0.01且小于或等于1000 以指数格式显示,否则以浮动格式显示 例如:3.230000000显示为3.23 0.00001显示为1E-05 但是我的代码的问题是,如果给定的数字是1,那么该数字将显示为1.00 if (dValue >= 0.01|| dValue <= 1000.0) return (string.Format("{0:0.##E+00}", dValue)); else
如果该值大于或等于0.01且小于或等于1000 以指数格式显示,否则以浮动格式显示 例如:3.230000000显示为3.23 0.00001显示为1E-05 但是我的代码的问题是,如果给定的数字是1,那么该数字将显示为1.00
if (dValue >= 0.01|| dValue <= 1000.0)
return (string.Format("{0:0.##E+00}", dValue));
else
return (string.Format("{0:F2}", dValue));
如果(dValue>=0.01 | | dValue考虑简单使用
或用于获取整数部分,查看其是否与原始数字相同(需要考虑输出格式精度以与desider eps进行比较,在您的情况下可能为0.005)。将数字四舍五入到小数点后两位和整数,并查看结果是否“足够接近”:
if(dValue>=0.01&&dValue替换最后一行
return (string.Format("{0:F2}", dValue))
到
时间太多了。:)
您将获得最大值为2位的值,如3.234
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Format(0.00001));
Console.WriteLine(Format(1));
Console.WriteLine(Format(3.2));
Console.WriteLine(Format(3.22));
Console.WriteLine(Format(3.256));
Console.ReadLine();
}
static string Format(double dValue)
{
if (dValue >= 0.01 && dValue <= 1000.0)
{
int temp = (int)Math.Round(dValue * 100);
if (temp % 100 == 0)
return ((int)dValue).ToString();
else if (temp % 10 == 0)
return (string.Format("{0:F1}", dValue));
else
return (string.Format("{0:F2}", dValue));
}
else
return (string.Format("{0:0.##E+00}", dValue));
}
}
可能有更干净的解决方案?!我想知道您的逻辑..>=0.01或@raghav55:请更正您的逻辑,因为它与书面文本不符。
return (string.Format("{0:0.##}", dValue))
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Format(0.00001));
Console.WriteLine(Format(1));
Console.WriteLine(Format(3.2));
Console.WriteLine(Format(3.22));
Console.WriteLine(Format(3.256));
Console.ReadLine();
}
static string Format(double dValue)
{
if (dValue >= 0.01 && dValue <= 1000.0)
{
int temp = (int)Math.Round(dValue * 100);
if (temp % 100 == 0)
return ((int)dValue).ToString();
else if (temp % 10 == 0)
return (string.Format("{0:F1}", dValue));
else
return (string.Format("{0:F2}", dValue));
}
else
return (string.Format("{0:0.##E+00}", dValue));
}
}
1E-05
1
3,2
3,22
3,26