c++ - C++ 中的整数舍入

标签 c++ int cmath

我试图在 C++ 中使用下面的公式。我将两个变量都声明为整数,我希望它们向上舍入,但它们似乎向下舍入。我已经看过这个但似乎无法找到问题所在。任何帮助将不胜感激。

int user_degrees_latitude, user_degrees_longitude;
const int lat_const=(-90)
const int long_const=(-180)

sector_latitude = (user_degrees_latitude - lat_const) / (10);
sector_longitude = (user_degrees_longitude - long_const) / (10);

sector_latitude 的答案应为 13,sector_longitude 的答案应为 11,但计算机分别向下舍入为 12 和 10。

最佳答案

在 C++ 中,整数不四舍五入。相反,整数除法会截断(读作:总是向零舍入)除法的剩余部分。

如果你想对整数产生舍入效果,你可以这样写:

sector_latitude = static_cast<int>(((user_degrees_latitude - lat_const) / (10.0)) + 0.5);

加上0.5会导致截断产生舍入效果。请注意在 10.0 上添加 .0 以在添加之前强制进行浮点除法。

我还假设 sector_latitude 是一个带有转换的 int。

关于c++ - C++ 中的整数舍入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21271815/

相关文章:

c++ - 如何在类构造函数中初始化匿名结构?

java - 我如何在 for 循环中传递整数值 2^62 -1

c++ - 如何与特定模板特化成为 friend ?

c++ - 身份别名模板可以作为转发引用吗?

c++ - HLSL 在代码中获取线程组数和线程数

将 int 更改为整数时 Java 测试失败

sql-server - 将 int 转换为时间(奇怪的值)

c++在添加两个绝对(正)值时得到负值

c++ - 向上和向下舍入数字 C++

c++ - Sin 和 Cos 为众所周知的角度提供意想不到的结果