浮点舍入,将0.5舍入为0
Floating point rounding which rounds 0.5 to 0
本文关键字:舍入 更新时间:2023-10-16
我在网上做了一些搜索。然而,以下情况没有解决方案。
如果值小于或等于5,则将其及其右侧的所有数字删除。
如果该值大于5,则将要舍入的数字增加1。
123.4561235转123.456123。
123.4561236转123.456124。
有什么办法吗?
好了,开始吧
免责声明:我还没有彻底测试过。不要在生产代码中使用它,尤其是对于货币(你根本不应该使用浮点表示货币)。
double specialRound(double x, int precision) {
return std::round((static_cast<long long>(x * std::pow(10.0, precision + 1)) - 1) / 10.0 + 0.05)
/ std::pow(10.0, precision);
}
演示
相关文章:
- C++将浮点指针值舍入为小数位数
- Boost::posix_time::ptime舍入到给定的分钟数
- 浮点定向舍入和优化
- 为什么输出精度没有正确舍入?
- 使用设置精度时如何阻止数字向上舍入?
- 如何在使用 MPFR 时在提升多精度中设置舍入模式
- OpenCV 细分一致的 Rect2f 到 Rect2i 舍入
- C++ 中的舍入函数
- 舍入 QDecDouble 值,精度最多为两个字符
- 将大 int 转换为浮点数,而不舍入 c++
- 舍入错误检测
- 根据浮点符号对浮点进行舍入的最简单方法是什么
- 将整数舍入到另一个整数的最接近的倍数
- Sizeof 舍入到对齐方式,但编译器仍将对象放在剩余的字节中
- 避免将 Int 转换为双重类型转换舍入
- 浮点数学运算后舍入不一致
- 浮动到绳子而无需舍入
- C++长双精度格式而不舍入
- 是否可以为 AVR 编写一个 constexpr 舍入函数?
- Time_T舍入到几分钟