我有一个值如下的float
:0.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%