C++ 将特殊浮点值舍入为整数
c++ rounding special float values to integers
我在将一些特殊的浮点数四舍五入为整数时遇到了一些问题。我需要将浮点数四舍五入为整数(当且仅当)前三个浮点值为零或 9。
例如,如果数字是 4.0001,我需要将其四舍五入为 4。 如果数字是 4.9998,我需要将其四舍五入为 5。除此之外,这些值应按原样显示。
换句话说,只有在满足上述两个规则的情况下,我才需要打印一个整数,否则我应该打印浮点数,
如何在C++实现这一目标。
问候
如果您对小数部分感兴趣,modf
是您的朋友。 说像这样:
double
conditionallyRound( double original )
{
double dummy;
double frac = modf( fabs( original ), &dummy );
return frac < 0.001 || frac > 0.999
? round( original )
: original;
}
如果x
应该四舍五入,那么x
和round(x)
之间的最大差值将为0.0001。
当然,您应该知道二进制浮点不能完全表示 0.0001,因此这始终是一个近似值。
相关文章:
- C++将浮点指针值舍入为小数位数
- Boost::posix_time::ptime舍入到给定的分钟数
- 浮点定向舍入和优化
- 为什么输出精度没有正确舍入?
- 使用设置精度时如何阻止数字向上舍入?
- 如何在使用 MPFR 时在提升多精度中设置舍入模式
- OpenCV 细分一致的 Rect2f 到 Rect2i 舍入
- 将整数舍入到另一个整数的最接近的倍数
- 在与C 双打中存储的大整数时,如何避免舍入/精确错误
- 是整数舍入规则决定了 C++、python3 和 python2.7 之间的 % 操作差异吗?
- 实现整数除法向上舍入的正确方法是什么?
- 如何将数字向上舍入到下一个整数
- 将浮点值向上舍入为整数,这有多可靠
- 用MPFR舍入整数
- C 的整数舍入
- 将浮点数转换为整数时如何舍入
- C++ 将特殊浮点值舍入为整数
- 不带逻辑运算符的舍入整数除法
- 误差C++舍入数字 - 表达式必须具有整数或枚举类型
- 使用整数除法减少舍入错误