floating-point - 在 Smalltalk 单元测试用例中,断言不应该失败

标签 floating-point assert smalltalk visualworks

我难住了。这是我的测试用例。

theTestArray := #(1.2 3 5.1 7).
self assert: theTestArray  squareOfAllElements = #(1.44 9 26.01 49).

断言不应该失败。在计算每个元素的平方是正确的。所以我做了“步入测试”,表明方法 squareOfAllElements 和 #(1.44 9 26.01 49) 的结果都是相同的,但断言评估为假。为什么?我在这里做错了什么?任何帮助表示赞赏。

最佳答案

您在这里处理浮点数。根据定义,浮点数是不精确的,您永远不应该使用 #= 来比较它们。

有关详细信息,请查看 Pharo 浮点数示例草案章节的第 1.1 节:http://stephane.ducasse.free.fr/Web/Draft/Float.pdf

关于floating-point - 在 Smalltalk 单元测试用例中,断言不应该失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7564521/

相关文章:

c - 这个 fabs() 的实现是如何工作的?

c - 将 NAN float 转换为 int 时出现问题

Swift assert() 无法与 nil 进行简单比较

git - Git 上的 Pharo 项目

oop - Smalltalk:原语是如何实现的?

floating-point - float 与定点数和性能

java - 为什么 Java 中浮点型(32 位)的指数是 -126 而不是 -128?

java - 新字符串();在 java

delphi - 如何在运行时检测某些编译器选项(如断言)是否设置为 ON?

smalltalk - Pharo:如何使 Cmd+d ("do it")默认执行整个多行语句,而不仅仅是当前行