我的版本号为1.1、1.2、1.3,我需要检查版本小于或大于1.2,但是在调试时我得到的答案比预期的要错误
float versionNumber = versinInfo.toFloat();
static float const VERSION_NUMBER(1.2);
if(abs((versionNumber - VERSION_NUMBER) <= 0.001))
{
// do operation
}
versionNumber为1.10000005,我虽然将检查从0.001更改为0.0000005,但这可能不是正确的解决方法
请提出最佳方法
答案 0 :(得分:2)
版本号本质上是整数。您已经有一个类,该类的主要版本应为整数,次要版本应为整数,并且比较运算符(这就是您要尝试的操作)。
其他方案甚至还有第三个补丁整数,一个用于alpha / RC的字符串...在使用适当语义的类中正确实现此目的(即,一种名为is_one_minor_version_away
的方法,在这里您可以正确地测试只有一个次要版本更改)。
在您的情况下,如果2.9比3.0会怎样?
答案 1 :(得分:1)
为什么不创建包含所传递版本信息的主要版本和次要版本的类,并添加在那里进行检查的逻辑。这个想法不是将其解析为float,而是将其用逗号分隔并将该信息视为int。