【发布时间】:2014-10-01 13:20:42
【问题描述】:
我有以下单元测试:
open System
open System.Collections.Generic
open Microsoft.VisualStudio.TestTools.UnitTesting
[<TestClass>]
type Test_Spectra () =
let standard = new Standard1()
[<TestMethod>]
member x.LightTransmittance () =
let input = Test_Spectra.TestSprectra1
let expected = 0.32728222797751
let actual = standard.LightTransmittance(input)
Assert.AreEqual(expected, actual)
当我运行单元测试时它失败了,但是“预期”和“实际”的值是相等的:
Expected 和 Actual 分别被推断为 float 和 double,但我的印象是 float 只是 double 的简写。 这有什么解释吗?
编辑 根据@Gustavo 的评论,我已将最后一行更改为:
Assert.AreEqual(expected, actual, 0.000000000000001)
测试通过了。
【问题讨论】:
-
值可能略有不同,因为浮点数最好使用增量进行比较。试试这个重载msdn.microsoft.com/en-us/library/ms243458.aspx
-
感谢@Gustavo,我使用了 16.0 的 delta 版并且测试通过了。
-
如果您的实际值
-
酷。添加为答案。
标签: unit-testing f#