我需要做一些数学运算。基本上用户输入的数字除以64,然后乘以64,但为了使其正常工作,需要在乘法之前完全去除小数。
示例:
150 is entered
150/64 = 2.34375 (need it to just be 2)
2 * 64 = 128
output = 128
答案 0 :(得分:1)
只需这样做。
floor(z/64)*64
[完全符合z
w.r.t op的要求]
正如Meik Vtune所提到的那样,我明显应该加上这一点,即使用简单的int
转换就可以观察到同样的事情。(仅当值在int的范围内时)。当使用负数时,这是可取的。
如果数字太大,分割结果可能无法存储在int
中,请使用楼层。
如果您需要-5.6
-5
这样的负数。
因此对于变量z,它是double,结果不适合int ..
if(z<0) z=-(floor(-z));
答案 1 :(得分:0)
如果要处理PyInstaller
,可以使用float
函数,该函数接收一个lrintf()
作为参数并返回一个float
:
long int
如果要处理float pi = 3.1415;
long int pi_without_decimals;
pi_without_decimals = lrintf(pi);
printf("%li", pi_without_decimals);
,可以使用double
函数,该函数接收一个lrint()
作为参数并返回一个double
:
long int
OBS:这些函数都在double pi = 3.1415;
long int pi_without_decimals;
pi_without_decimals = lrint(pi);
printf("%li", pi_without_decimals);
中声明。
有关舍入和截断函数的更多信息: https://www.gnu.org/software/libc/manual/html_node/Rounding-Functions.html
答案 2 :(得分:-2)
如果将输入变量定义为short,int或long,则只能获得整数部分。
int input = 150;
int output = (input / 64) * 64;
// Now output = 128.