向上和向下舍入一个数字 C

新手上路,请多包涵

我试图让我的程序分别向上和向下舍入一个数字。

例如,如果数字是 3.6 ,我的程序假设将最接近的数字四舍五入,如果数字是 3.4 ,它将向下舍入为 3。

我尝试使用 ceil 库来获取 3 项的平均值。

results = ceil((marks1 + marks2 + marks3)/3)

但是, ceil 只会将数字向下舍入,但不会向上滚动。

我偶然发现了一种算法

var roundedVal = Math.round(origVal*20)/20;

但我仍然无法为某些问题找到一个公式。

原文由 Bryan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 834
2 个回答
std::ceil

向上舍入到最接近的整数

std::floor

向下舍入到最接近的整数

std::round

执行您期望的行为

如果这不能为您提供所需的内容,请提供带有数字的用例!

原文由 brettmichaelgreen 发布,翻译遵循 CC BY-SA 4.0 许可协议

您不需要在 C 或 C++ 中舍入的函数。你可以使用一个简单的技巧。添加 0.5,然后转换为整数。无论如何,这可能是全面的。

 double d = 3.1415;
double d2 = 4.7;
int i1 = (int)(d + 0.5);
int i2 = (int)(d2 + 0.5);

i1 为 3,i2 为 5。您可以自己验证。

原文由 MarcD 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏