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();
}
}
}
有什么想法吗?
这是一个非常接近0的数字。这是科学记数法;E-14表示10^-14。换句话说,将小数点向左移动14位。
有些库使处理浮点运算更加直观;否则,您需要计算并测试容差,以查看您是否"足够接近"。
您应该考虑使用"decimal"类型——您的代码看起来像C#.net。这具有很高的精度,并且设计为如您所期望的那样工作(用于财务计算等)
试试看!:-)