【发布时间】:2020-08-30 11:15:51
【问题描述】:
我有一种方法可以输入一个数字并以符号格式返回该数字。我在我的代码中使用了双精度、浮点数和整数,所以我编写了三个相同的方法,只是它们的摄入变量不同。有没有办法只用一种方法就能达到同样的效果?
尝试进一步解释。我想创建一个接受多种变量类型的方法。而不是调用双精度的方法,我希望它接受一个变量,如果它是一个 int、一个浮点数或一个不强制转换的双精度数。现在我有 3 个相同方法的副本,每个都接受不同的变量。由于代码中的其他原因,我不想将我使用的所有变量都更改为双精度数。
有什么方法可以使用一种方法来接受所有三种变量类型,而不是使用 3 种,每种方法只接受一种变量类型。
public string NotationMethod(double x, string y)
{
if (x > 1000)
{
var exponent = Math.Floor(Math.Log10(Math.Abs(x)));
var mantissa = x / Math.Pow(10, exponent);
return mantissa.ToString("F2") + "e" + exponent;
}
return x.ToString("F0");
}
public string NotationMethod(int x, string y)
{
if (x > 1000)
{
var exponent = Math.Floor(Math.Log10(Math.Abs(x)));
var mantissa = x / Math.Pow(10, exponent);
return mantissa.ToString("F2") + "e" + exponent;
}
return x.ToString("F0");
}
public string NotationMethod(float x, string y)
{
if (x > 1000)
{
var exponent = Math.Floor(Math.Log10(Math.Abs(x)));
var mantissa = x / Math.Pow(10, exponent);
return mantissa.ToString("F2") + "e" + exponent;
}
return x.ToString("F0");
}
【问题讨论】:
-
能否请edit 发帖解释为什么只有
double版本不够? -
您好,在我的代码中,我使用的是 int、float 和 double 变量。我不想将所有变量都更改为双精度数,因此我将这三种方法用作全部,以确保在我对它们使用此方法时它们都被接受。我想知道是否有更简洁的编码方式。
-
我根本没有得到你的评论......你在谈论什么样的变量“将所有变量更改为双精度数”?在任何情况下,请edit帖子而不是添加评论。
-
你为什么不简单地从其他两个方法中调用方法
NotationMethod(double, string)?它将减少代码的重复。所有三种方法都有相同的实现(var在编译期间被double替换)。在C#中不可能创建一个方法来替代这三种方法。
标签: c# variables methods constructor repeat