2016-12-24 70 views
-1

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

例子:

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

做整数除法。 '150/64 = 2',然后'2 * 64 = 128'。 –

+5

发布您的代码,以便我们可以看到变量声明。 –

+2

你想*圆*的价值,或*截断*它?你是否希望它仅用于输出或用于内部计算? –

回答

1

只要做到这一点。

floor(z/64)*64 [完美的作品正z WRT运算的要求]

由于Meik V调谐提到我显然应该补充这一点,同样的事情可以用简单int铸造观察。(仅当值处于INT范围)当使用负数时,这是可取的。

如果数字太大,可能无法将分割结果存储在int中,则使用floor。

如果是负数,如-5.6,则需要-5

因此,对于变量Z是双人和结果将不适合用int ..

if(z<0) z=-(floor(-z)); 
+0

为什么downvote? ... – coderredoc

+0

,因为使用“int”不会使用任何函数。 –

+0

@MeikVtune:检查鼻子更清楚。谢谢。投给'int'的 – coderredoc

-2

如果你定义输入变量短,int或长,您将获得只为整数部分自由。

int input = 150; 
int output = (input/64) * 64; 
// Now output = 128. 
+0

'char'可能无法保存'150'。此外,该操作不会在'char'或'short'上完成。 – Olaf

+0

噢,谢谢,虽然短小的问题是什么? – Ariel

+0

@CodingLambdas字符取决于编译器偏好,在clang或gcc中可以使它有符号或无符号。我再问一遍问题是什么问题?我只能看到一个数字很小。 – Ariel