C# double subtraction

本文关键字:subtraction double | 更新日期: 2023-09-27 18:19:34

我需要处理double类型的变量,在计算中我遇到了一些我不理解的东西。我知道浮点类型并不精确,但它有足够的精度来满足我的需求。

首先,我将200的值与1.1相乘,得到220.00000003,这是预期的,并且足够接近220。然后,我将其从预期值中减去(222)。结果应为0或非常接近0。相反,我得到了-28.421709430407E-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();
        }
    }
}

有什么想法吗?

C# double subtraction

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

有些库使处理浮点运算更加直观;否则,您需要计算并测试容差,以查看您是否"足够接近"。

您应该考虑使用"decimal"类型——您的代码看起来像C#.net。这具有很高的精度,并且设计为如您所期望的那样工作(用于财务计算等)

试试看!:-)