为什么我不能使用 CppUnitLite 测试CHECK_DOUBLES_EQUAL
Why can't I use CppUnitLite test CHECK_DOUBLES_EQUAL
我是一个学习c++类的新手程序员。
任务是使用字符串流编写双精度,然后使用CppUnitLite中的一个宏进行检查。我想在写操作中使用CHECK_DOUBLES_EQUAL来检查double,但VS中的intellisense说它不起作用。在下面的示例中,我留下了一个简单的CHECK_EQUAL。这还不够好。我需要使用CHECK_DOUBLES_EQUAL作为浮点值。
我尝试过CHECK_DOUBLES_EQUAL(dvalue,svalue,0.1),但不起作用。我也尝试过使用期望值的实际值,但这也不起作用。
CHECK_DOUBLES_EQUAL确实适用于读取操作(第二个示例),但我无法使其在第一个示例中工作。
为什么会这样?我做错了什么?
TEST(writeDouble, stringStream)
{
std::stringstream sValue;
double dvalue =34.9;
sValue << dvalue;
if (!sValue)
{
CHECK_FAIL("conversion failed");
}
CHECK_EQUAL("34.9", sValue.str());
}
TEST(readDouble, stringStream)
{
std::stringstream sValue("34.9");
double dvalue;
sValue >> dvalue;
if (!sValue)
{
CHECK_FAIL("conversion failed");
}
CHECK_DOUBLES_EQUAL(34.9, dvalue, 0.1);
}
问题是,在您的写操作中,您没有试图与double进行比较:您试图与STRING进行比较。C++是一种静态类型的语言,不会将字符串与double进行比较。
与CHECK_EQUAL("34.9", sValue.str());
一起使用的代码似乎是确保stringstream
正确解释输入双精度值的正确代码。
相关文章:
- CHECK(调用)函数在Google Colab中出错
- 'make check' GLIBC 运行时的链接问题
- 为什么我会收到"Run-Time Check Failure #2 - Stack around the variable 'pr' was corrupted"错误?
- rpmbuild check-rpath 报告错误,指出路径不是绝对的,不正确的
- 调用 dll 函数时"Run-Time Check Failure #0 - The value of ESP"
- 在创建完整对象之前编写 if-can-add check 方法的正确方法?
- "check if member exists using enable_if"中修改的代码不起作用
- Bison-3.0.4 中的 Linux 从头开始错误 'make check'
- SQL Server 2016 CLR 存储过程错误:"A system assertion check has failed"
- 在C++/Visual Studio中,通过给定数据格式(doubles、float、int、1位bools)的UDP发
- 在libc++和glibc中,解析doubles时字符串流行为不一致
- Linux Pybind11 'build check -j 4' 错误
- 十六进制值的SQLITE CHECK约束
- 我找不到程序中的歧义,但编译器说 check(int) 和 check(float) 之间存在歧义
- Check Writer:使程序将值10-19显示为单词
- Arduino to Raspberry crc32 check
- 从const doubles的指针返回指向double的指针
- 从字符串、char和doubles文件中只读取doubles
- 要求基类运算符执行"domain check" (C++)
- 处理doubles时使用的模运算符