3

我有一个非常简单的 if 语句,它没有按预期工作。

我的主要问题是,即时窗口对 if 语句的评估与代码执行不同:

   if( FreeProductStorageVolume < product.Volume * quantity )
   {
      Debug.Log( FreeProductStorageVolume );
      Debug.Log( product.Volume );
      Debug.Log( quantity );
      Debug.Log( product.Volume * quantity );
      canProduce = false;
   }

所有变量都是浮点数

在此处输入图像描述

一切都表明不应命中第 824 行中的断点。

甚至即时窗口也将 if() 语句评估为假。

有没有其他人发生过这样的事情?

4

1 回答 1

6

这看起来像一个浮点精度问题。这个表达式:

FreeProductStorageVolume - quantity * product.Volume.

似乎评估为一个积极的,但是,非常小的数字,例如 1E-20

于 2015-04-22T13:09:11.593 回答