如何将所有整数转移到该点的右侧

时间:2014-11-26 17:29:13

标签: c# math double

如何将所有整数转移到该点的右侧? 示例我有5342,我希望函数返回0.5342。我不知道double中的位数,它是随机生成的。应该相当容易,但我找不到任何答案。

4 个答案:

答案 0 :(得分:3)

private static void Main(string[] args)
{
    Console.WriteLine(MyFunction(5127));
    Console.WriteLine(MyFunction(1));
    Console.WriteLine(MyFunction(51283271));
    Console.WriteLine(MyFunction(-512));
    Console.WriteLine(MyFunction(0));
}

    public static double MyFunction(double myNumber)
    {
        return Math.Floor(myNumber) / Math.Pow(10, Math.Abs(myNumber).ToString().Length);
    }

Output

答案 1 :(得分:2)

说实话,这听起来很奇怪,但你可以使用:

while (Math.Abs(value) >= 1)
{
    value = value / 10;
}

如果输入是无穷大的话,那将会进入一个无限循环 - 你可能会在你继续分裂时丢失信息。后一点很重要 - 如果您真正感兴趣的是十进制表示,则应考虑使用decimal而不是double

你可以潜在使用Math.LogMath.Pow的混合物来完成它,但上面的内容可能就是我的开头。

答案 2 :(得分:0)

除以10除非数字小于1。

public static double SomeMethod(double n)
{
    double d = n;
    bool isNegative = (d < 0);
    if(isNegative)
        d = d * -1;

    while(d >= 1)
        d = d/10;

    if(isNegative)
        d = d * -1;

    return d;
}

替代(更精确)选项:

public static double SomeMethod2(double n)
{
    double d = n;
    bool isNegative = (d < 0);
    if(isNegative)
        d = d * -1;

    int numberOfDigits = ((int)d).ToString().Length;

    int divisor = 1;
    for(int i = 0; i < numberOfDigits; i++)
        divisor = divisor * 10;

    d = d/divisor;

    if(isNegative)
        d = d * -1;

    return d;
}

答案 3 :(得分:0)

这将让你大部分时间

    public static string test()
    {
        double dub = 5432;

        string dubTxt = dub.ToString();

        string text = "0.";

        string test = string.Concat(text + dubTxt);

        if (1 == 1)
        {

           MessageBox.Show(test);
           return test;

        }
    }

您必须开发更多if语句来处理负数。

    public static string test()
    {
        double dub = 5432;

        string dubTxt = dub.ToString();

        string text = "0.";

        string test = string.Concat(text + dubTxt);

        if (dub < 0)
        {

              //Do this code instead
        }
    }
祝你好运。如果你选择的话请碰我!我需要信用,所以我可以做其他垃圾。 :-D