json-tutorial
json-tutorial copied to clipboard
EXPECT_EQ_BASE宏可以用于double类型数据的判等吗
你好作者,你的所有number类型判定是否相等都是用EXPECT_EQ_BASE宏,而double类型数字显然不是精确的。这样测试可以吗?
不过还真是谢谢作者在业务那么繁忙中愿意写那么高质量的代码,这个实例明显对新手是有极大价值的。
double类型做运算的时候可能会有精度损失,不能用==比较。如果str所表示的浮点数在double精度内,用strtod( const char _str, char *_str_end )转换为double,不会损失精度,如果str所表示的浮点数不在double精度内,strtod的处理和浮点常数精度超出double精度的处理一样(浮点常数以double类型存储),所以可以用==比较。
这里面的double的有效位是17位 其中小数点算1位的话,有效位就是16位 只要前17个数相等(+外加同阶),就可以认为两个数是相等的