在打印浮点数之前检查浮点数是否为偶数

  • 本文关键字:浮点数 是否 打印 c++
  • 更新时间 :
  • 英文 :


我有一个值如下的float0.012447,我想重新缩放0.0 - 1.0之间的值并使用它来显示百分比,但我只想显示偶数值,例如... 12%, 14%, 16%, ...

像这样:

float percent = ....
int value = percent * 100;
if(value == 12 || value == 14 || value == 16 .....){
printf("Result: = %fn", percent);
}

如果有一种简单的方法可以在不使用percent * 10和多个ifs的情况下做到这一点,我想举例

作为@salcc答案的补充,这可能接近你所要求的;如果它是偶数,则有条件地打印value

#include <cmath>
#include <iostream>
int main() {
for(float percent = 0.f; percent <= 1.f; percent += 1.f / 47.f) {
int value = static_cast<int>(std::round(percent * 100.f));
if(value % 2 == 0) { // Is it even? If so, print it.
std::cout << "Result: = " << value << "n";
}
}
}

这种方法的真正缺点是它可能在输出中产生差距。上面创建了此输出:

Result: = 0
Result: = 2
Result: = 4
Result: = 6
Result: = 26
Result: = 28
Result: = 30
Result: = 32
Result: = 34
Result: = 36
Result: = 38
Result: = 40
Result: = 60
Result: = 62
Result: = 64
Result: = 66
Result: = 68
Result: = 70
Result: = 72
Result: = 74
Result: = 94
Result: = 96
Result: = 98
Result: = 100

要四舍五入到最接近的偶数,您可以将数字除以 2,将结果四舍五入,然后将其乘以 2。您可以这样做,并通过执行以下操作将其转换为百分比:

printf("Result: %g%%n", round(percent * 100 / 2.0) * 2);

要使用round()功能,您必须将#include <cmath>放在文件的顶部。


演示:

float percent = 0.129;
printf("Result: %g%%n", round(percent * 100 / 2.0) * 2);

输出:

Result: 12%

最新更新