- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
这不是真实世界的例子!请不要建议使用 decimal
或其他东西。
我问这个只是因为我真的很想知道为什么会这样。
我最近再次看到很棒的 Tekpub 网络广播 与 Jon Skeet 一起掌握 C# 4.0。
在第 7 集 - 小数和 float 中,它真的很奇怪,甚至我们的Chuck Norris of Programming(又名 Jon Skeet) 对我的问题没有真正的答案。只有一个可能是。
MyTestMethod()
失败而 MyTestMethod2()
通过?[Test]
public void MyTestMethod()
{
double d = 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
Console.WriteLine("d = " + d);
Assert.AreEqual(d, 1.0d);
}
这导致
d = 1
Expected: 0.99999999999999989d But was: 1.0d
[Test]
public void MyTestMethod2()
{
double d = 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
d += 0.1d;
Console.WriteLine("d = " + d);
Assert.AreEqual(d, 0.5d);
}
这导致成功
d = 0,5
但为什么呢?
为什么 Assert.AreEqual()
没有涵盖这一点?
最佳答案
Assert.AreEqual()
确实涵盖了这一点;您必须将重载与第三个 delta
参数一起使用:
Assert.AreEqual(0.1 + 0.1 + 0.1, 0.3, 0.00000001);
关于c# - Assert.AreEqual() 与 System.Double 变得非常困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8825956/
考虑这个结构: public struct MyNumber { private readonly int _value; public MyNumber(int myNumber)
我正在为我正在处理的一个简单的控制台游戏项目运行以下测试,该项目因 Assert.AreEqual 失败而失败。 [TestMethod] public void TestMethod1()
我有一个我无法解释的非常奇怪的行为。 我有以下类(class): public class Project { public virtual int Id { get; set; }
我有以下单元测试: string MtrlCode = "0"; Assessment target = new Assessment(MtrlCode); List EdgeCaseSymbolCo
我正在尝试使用 比较两个列表 CollectionAssert.AreEqual(ListExpected, ListActual); 但是我得到了一个异常(exception) Expected
我的父组件处理对服务器的请求并为其子组件提供来自响应的数据。在这种情况下,一个子组件(FilterSidebar:包含过滤器组件)应该只呈现一次,因为过滤器将从初始请求的数据创建。 这就是为什么我要使
我对从集合中获取对象的方法进行了单元测试。这一直失败,我不明白为什么,所以我在下面创建了一个非常简单的测试来创建 2 个供应商对象并测试它们是否相等,看看我是否可以在我的代码测试中发现问题。但是这个测
java.lang.StackOverflowError at kotlin.jvm.internal.Intrinsics.areEqual(Intrinsics.java:164)
假设我有一个 data class Eq(x: Int?) 这将生成一个看起来像这样的 equals 方法 public boolean equals(Object other){ if(th
我是 Java 初学者。我想在下面的类中实现一些基本功能。 /*Demonstrate the different data types in java*/ import java.io.*; imp
我正在为代码生成器编写单元测试,我的大部分测试将跨越多行的输出与一些黄金输出进行比较。目前,我正在将输出与 Assert.AreEqual(string, string) 进行比较,后者显示第一个差异
举个例子: string x = null; var y = String.Empty; Assert.AreEqual(x, y); // test fails! Asser
我正在进行一些单元测试,但不确定为什么这个特定测试会失败。 测试是为了断言自定义 View 引擎在正确的位置查找 View 。 在我的自定义 View 引擎中是这样的: AreaMasterLocat
VS UnitTest 项目中断言的标准行为是仅告诉我测试在特定行上失败。 但是有时候,如果我可以在这样的断言失败时中断,那会很方便。因为仅在该行设置断点也会导致测试用例不失败。如果我可以在断言失败时
我对这一切都很陌生,所以任何帮助都将不胜感激。 我已经从 url 方法创建了一个下载图像,我需要对其进行测试。 我已尝试填写测试参数,但我不确定要输入什么。 你能告诉我要去哪里吗, 谢谢。亚伦 [Te
示例: Assert.AreEqual(**null**, Program.nDaysMonth(5, -10), "Error nDaysMonth, Month may -10."); 我希望有一
我有一个类 MyCustomClass: public MyCustomClass { public MyCustomClass() { MyObject = new
我正在编写一些单元测试,但以下断言失败了: Assert.AreEqual(expected.Episode, actual.Episode); 如果我改为调用它,它会成功: Assert.IsTru
更新 3: This page告诉我如何用三行来做。任何人都知道如何在一行中完成它? for (int i = 0; i < 5; i++) { my_value_to_verify = get
我创建了一个自定义结构来表示金额。它基本上是 decimal 的包装器。它有一个隐式转换运算符,可以将其转换回 decimal。 在我的单元测试中,我断言金额等于原始十进制值,但测试失败。 [Test
我是一名优秀的程序员,十分优秀!