删除C中的所有小数

时间:2016-12-24 19:25:38

标签: c math decimal

我需要做一些数学运算。基本上用户输入的数字除以64,然后乘以64,但为了使其正常工作,需要在乘法之前完全去除小数。

示例:

150 is entered
150/64 = 2.34375 (need it to just be 2)
2 * 64 = 128
output = 128

3 个答案:

答案 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.