json-tutorial icon indicating copy to clipboard operation
json-tutorial copied to clipboard

EXPECT_EQ_BASE宏可以用于double类型数据的判等吗

Open JKAK47 opened this issue 8 years ago • 3 comments

你好作者,你的所有number类型判定是否相等都是用EXPECT_EQ_BASE宏,而double类型数字显然不是精确的。这样测试可以吗?

JKAK47 avatar Nov 13 '16 07:11 JKAK47

不过还真是谢谢作者在业务那么繁忙中愿意写那么高质量的代码,这个实例明显对新手是有极大价值的。

JKAK47 avatar Nov 13 '16 07:11 JKAK47

double类型做运算的时候可能会有精度损失,不能用==比较。如果str所表示的浮点数在double精度内,用strtod( const char _str, char *_str_end )转换为double,不会损失精度,如果str所表示的浮点数不在double精度内,strtod的处理和浮点常数精度超出double精度的处理一样(浮点常数以double类型存储),所以可以用==比较。

bumzy avatar Nov 14 '16 12:11 bumzy

这里面的double的有效位是17位 其中小数点算1位的话,有效位就是16位 只要前17个数相等(+外加同阶),就可以认为两个数是相等的

JosanSun avatar Feb 13 '17 12:02 JosanSun