为什么0.1 + 0.2 == 0.3 in C#何时使用float类型

时间:2016-05-18 15:19:06

标签: c# floating-point precision floating-accuracy

在许多编程语言中,0.1 + 0.2等操作不等于0.3,而是0.30000000000000004。因此,像0.1 + 0.2 == 0.3这样的检查将返回false。

就我而言,这是由于IEE 754标准,这就是为什么它对许多语言来说都很常见。

在C#中可以找到相同的行为。我使用下一个代码片段来测试它:

static void Main(string[] args)
    {
        double x = 0.2;
        double y = 0.1;
        double res = 0.3;
        double z = x + y;

        Console.WriteLine("bool result = {0}", z == res); // outputs false
        Console.ReadLine();
    }

但如果我使用相同的代码但使用浮点变量,一切都以其他方式工作:

static void Main(string[] args)
    {
        float x = 0.2f;
        float y = 0.1f;
        float res = 0.3f;
        float z = x + y;

        Console.WriteLine("bool result = {0}", z == res); // outputs true
        Console.ReadLine();
    }

有人可以向我解释一下吗?

0 个答案:

没有答案