2016-12-24 11 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 VTUNEが、私は明らかに同じことは、単にint鋳造を用いて観察することができ、これを追加する必要が述べたように。(値がintの範囲内にある場合にのみ、 )これは、負の数が使用されるときより好ましい。

数値が大きすぎて分割結果がintに格納されない場合はfloorを使用してください。

-5.6のような負の数の場合、-5が必要です。だから、結果はint型に収まらない二重で、変数zのため

..

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

なぜdownvote? ... – coderredoc

+0

'int 'を使うと、関数を使わずに同じことができます。 –

+0

@MeikVtune .:それははるかに明確です。ありがとう。 – coderredoc

-2

あなたが入力変数は限り短く定義した場合、intまたは長いあなたがのための唯一の整数部分を取得します無料です。

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

'char'は' 150'を保持できません。また、操作は 'char'や' short'には行われません。 – Olaf

+0

ああ、ありがとう、短い間に何が問題なのですか? – Ariel

+0

@CodingLambdas charはコンパイラの設定に依存しますが、clangやgccではそれを符号付きまたは符号なしにすることができます。私は短く問題が何かを再度尋ねますか?私が見ることができるのは、大きな数字を保持するのが小さいことだけです。 – Ariel

関連する問題