我在SQL Server中运行一个返回一些计算值的函数。使用dbFit在FitNesse中测试结果时,它声称值不相同(请参见下面的屏幕截图)。
值以浮点形式返回,并且在所有小数的比较中失败 - 即使它只显示两个小数。有没有办法限制比较的小数范围?
答案 0 :(得分:3)
你永远不应该比较花车,至少不是严格的。那是因为二元系统的不完善。
float a = 0.15 + 0.15
float b = 0.1 + 0.2
if(a == b) // can be false!
if(a >= b) // can also be false!
由于实数中的有效数字有限,我们无法完美地存储实数。几乎总是一个错误。尝试用二进制写入0.1!我们在屏幕上看到的0.1为真的只是近似值。它是一个广泛的主题,您可能希望进入数值分析以获取详细信息。
更一般地说,您可以在此处找到一些信息:http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm
至于你的问题:
你应该使用〜=(大约相等)。 您可以在此处找到更多信息:http://fitnesse.org/FitNesse.UserGuide.SliM.ValueComparisons