C#双减法

时间:2015-10-27 19:29:44

标签: c# double subtraction

我需要对double类型的变量进行一些工作,并且在计算中我遇到了一些我不理解的东西。我知道浮点类型并不精确,但它具有足够的精度以满足我的需要。

首先,我将 200 的值乘以 1.1 的乘数,得到 220.00000000000003 ,这是预期的,并且足够接近 220 然后我从预期值( 220 )中减去该值。结果应 0 或非常接近 0 。相反,我得到 -2.8421709430404007E-14 ,我无法解释。

using System;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            double u = 200;
            double v = 1.1;
            double x = u * v;
            double y = 220;
            double z = y - x;

            Console.WriteLine(u + " * " + v + " = " + x);

            Console.WriteLine(y + " - " + x + " = " + z);

            Console.ReadLine();
        }
    }
}

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这是一个非常接近0的数字。它的科学记数法; E-14表示10 ^ -14。换句话说,将小数点向左移动14个位置。

有些库可以使浮点运算更加直观;否则,你需要弄清楚并测试容差,以确定你是否足够接近。"

答案 1 :(得分:0)

你应该考虑使用"十进制" type - 您的代码看起来像C#.net。 这具有很高的精度,可以按照您的预期工作(用于财务计算等)。

试一试! : - )