Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找双精度/浮点值在C中为奇数或偶数_C#_Double - Fatal编程技术网

C# 查找双精度/浮点值在C中为奇数或偶数

C# 查找双精度/浮点值在C中为奇数或偶数,c#,double,C#,Double,在C中,如何在不将双精度值转换为int的情况下确定双精度值是偶数还是奇数?例如 123.0d - odd 456.0d - even 3.1415926d - floating point (neither odd nor even) 尝试模%运算符: double x = 123; string result = x % 2 == 0 ? "even" : x % 2 == 1 || x % 2 == -1 ? "odd" : "floatin

在C中,如何在不将双精度值转换为int的情况下确定双精度值是偶数还是奇数?例如

123.0d     - odd
456.0d     - even
3.1415926d - floating point (neither odd nor even)
尝试模%运算符:

 double x = 123;

 string result = x % 2 == 0 
    ? "even" : x % 2 == 1 || x % 2 == -1
    ? "odd"
    : "floating point"; // e.g. 123.456789
编辑:什么时候起作用?浮点值为单,不包含指数部分时为双,精确表示整数值

所以我们知道,只要x在这些范围内,这个解就会起作用

[-2**24..2**24] == [-16777216..16777216]                 (float)
[-2**52..2**52] == [-4503599627370496..4503599627370496] (double)
请注意,由于.Net假定负%positive==nonpostive,例如-3%2==-1,我们必须检查x%2==-1以及x%2==1

编辑:如果你先转换成十进制,它应该可以工作

public static bool IsEven(double x)
{
      return x % 2 == 0;
}

请注意,创建一个帮助器方法需要比实际执行更多的代码,因此,如果您将其放在生产环境中,请期待您的QA团队向您发送讨厌的电子邮件

我想你自己回答了你的问题,但我写了一段简短的代码:

static void Main(string[] args)
    {
        double number=10.0;

        if(number%2==0)
        {
            Console.WriteLine("Your number is even!");
        }
        else
        {
            Console.WriteLine("Your number is odd!");
        }
        Console.ReadLine();
    }

这样你就可以看到它是否有效了

我很困惑。2.5是奇数还是偶数?如果输入%2==0,则为偶数odd@RaviReddy恭喜你,你有你的答案了。把双精度转换成整数有什么不好?是作业吗?“你的努力是什么?”拉维雷迪-没错。如果需要检查奇数/偶数,为什么首先要使用double?您还没有回答2.5是奇数还是偶数的问题。@CodeCaster:当double表示小的整数值时,没有舍入错误:double只有一个整数尾数负1???哦,我明白了。。。nice@Joe:是的,根据.Net-3%2==-1这是一个很好的编辑,我不需要信用,请投赞成票。@CodeCaster:感谢您在评论中提出了很好的编辑问题请求,帮助我改进了我过早的答案。如果我想测试奇数呢?返回值%2==0我已经尝试过了,但是没有用如果isEven返回false,那么您的值是奇数。那么3.2是奇数吗?您的QA团队查看代码并对其进行代码审查?这似乎很奇怪。我只希望代码能被其他程序员审查。这就是说,如果我审查使用这种方法的代码,我当然不会建议删除它。小方法一点问题都没有,它被称为抽象——OOP的四大支柱之一。foo=IsEvenx比foo=x更具表现力%2==0;,特别是当你把逻辑内联在200个地方时,如果number==3.1415926呢?你的程序返回你的号码是奇数!听起来有点奇怪。。。
static void Main(string[] args)
    {
        double number=10.0;

        if(number%2==0)
        {
            Console.WriteLine("Your number is even!");
        }
        else
        {
            Console.WriteLine("Your number is odd!");
        }
        Console.ReadLine();
    }