簡體   English   中英

如何在JUnit中測試float / double的相等性?

[英]How to test for equality of float/double in JUnit?

assertEquals(double,double)方法被合理地棄用。 是否有替代和/或不同的方法烘焙到junit中-還是我推出了自己的小擴展程序

  static boolean assertEquals(double d1, double d2) {
    return Math.abs(d1 - d2) < 1e-8;
}

是的,請改用assertEquals(double expected, double actual, double delta)

對於JUnit,已經有功能了。

但是在JUnit測試用例之外的其他類型的Java代碼中, IBM建議使用除法而不是減法比較兩個浮點數-這樣可以更容易地選擇適用於所有輸入范圍的epsilon。

if (abs(a/b - 1) < epsilon)

至於epsilon的值,我將使用Wikipedia表中給出的5.96e-08或2x的值。

(請參閱使用==運算符比較float / double值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM