【发布时间】:2015-10-27 19:29:44
【问题描述】:
我需要对 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.8421709430404007E-14接近于零(即将小数点向左移动 14 次 )。 -
-2.8421709430404007E-14 表示
-2.84 * 10 ^ -14。真的很近。有关Scientific notation的更多信息 -
请学习科学记数法。
-
换句话说,结果非常接近(但不完全)
-0.00000000000003 -
非常接近于 0。
标签: c# double subtraction