我的单元测试因此而失败,所以我想知道我是否使用了正确的数据类型?
阅读双重的规格,我认为应该没问题,但这就是发生的事情:
我正在从一个带有值的文件中读取一个字符串0,0175(逗号为十进制sep.)
然后我将它转换为double然后乘以10000.
执行乘法的函数是:
private static double? MultiplyBy10000(double? input)
{
if (!input.HasValue)
{
return null;
}
return input.Value*10000;
}
Run Code Online (Sandbox Code Playgroud)
接下来是来自眼前的窗口:
input.Value
0.0175
input.Value*10000
175.00000000000003
Run Code Online (Sandbox Code Playgroud)
这就是我的单元测试失败的原因,因为我期望175.
双重不够准确吗?
检查其他值:
input.Value*1
0.0175
input.Value*10
0.17500000000000002
input.Value*100
1.7500000000000002
input.Value*1000
17.5
input.Value*10000
175.00000000000003
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我有12个测试用例0,0155 0,0225 0,016 0,0175 0,0095 0,016 0,016 0,0225 0,0235 0,0265
并断言其中4个,其他3个没有这种行为