0

整数型のみを使用して簡単に丸めを行う方法を見つけようとしました。次の解決策が見つかりました。

例 1 - 切り上げ

Value1=260
Value2=305

Tmp1=(10 * Value1) / Value2 = 8.52 = 8 (integer)
Tmp1=(Tmp1 + 5) / 10 = (8 + 5) / 10 = 1.3 = 1 (integer)

例 2 - 切り捨て

Value1=76
Value2=305

Tmp1=(10 * Value1) / Value2 = 2,49 = 2 (integer)
Tmp1=(Tmp1 + 5) / 10 = (2 + 5) / 10 = 0.7 = 0 (integer)

これを行うためのより良い方法はありますか?

たぶん、これは同じ問題を抱えている他の誰かを助けるでしょう。

4

3 に答える 3

0

お役に立てれば:

int round(float myValue) {  [Test Values: 0.51, 0.49, 2.7, 3.3]
int rounded=myValue*2  [1,0,5,6]
int toAdd=myValue % 2  [1,0,1,0]
rounded=rounded/2      [0,0,2,3]
rounded=rounded+toAdd  [1,0,3,3]
return rounded
}
于 2013-10-16T10:25:49.457 に答える
0

どのプログラミング言語ですか? 通常、その操作を行うラウンド関数があります。Java の例:

//.00 added to get 2 decimals
double Value1=260.00;
double Value2=305.00;

int Tmp1,Tmp2;

//To round from 5,1 to 5:

Tmp1 = (int) Math.floor(Value1/Value2);

//To ceil from 5,1 to 6:

Tmp1 = (int) Math.ceil(Value1/Value2);
于 2013-10-16T10:08:40.673 に答える
0

数値が符号なしの数値であり、2 分の 1 を切り上げる動作が必要であると仮定すると、2 つの条件のいずれかが当てはまる場合は簡単です。除数が 2 の倍数であることがわかっている場合は、単純に (n/​​(d/2)+1)/2 を計算します。除数が 2 の倍数であることがわかっていないが、被除数が大きすぎないことがわかっている場合は、((2*n/d+1)/2 を計算します。どちらの条件にも当てはまらない場合は、さらに個別に処理する必要があります。ケース。

于 2013-12-26T22:22:22.713 に答える