在许多编程语言中,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();
}
有人可以向我解释一下吗?