1

iPhoneアプリに数学関連のコードがあります。私は以下のような方程式を持っています。

int tempVal = 56/50;
NSLog(@"%d", tempVal);

出力
2013-03-25 16:29:36.749 TestApp[1467:c07] 1

実際56/50 = 1.12、mytempValは整数であるため、結果は1になります。

しかし、私は結果よりも近い値を求めています。私は2私の出力として欲しいという意味です。tempValプログラムでlike
tempVal+1またはtempVal = tempVal + 1somethingでインクリメントすることはできません。

それをする可能性はありますか?

4

6 に答える 6

5

tempValこれはそれを行う方法です( floatではなくintのままにしたい場合):

int tempVal = ceil((float)56/50);

NSLog(@"%d", tempVal);
于 2013-03-25T11:23:44.900 に答える
2

適用されるのと同じルールC:56と50はintであるため、56/50はinteger除算です。Integer除算は切り捨てられるため、56/50は整数1を生成しますfloat。値を取得している場合は、正常に機能します。

float tempVal = 56.0/50.0;
    NSLog(@"%f", ceil(tempVal));

また

float tempVal =(float) 56/50;
    NSLog(@"%f", ceil(tempVal));
于 2013-03-25T11:23:58.310 に答える
1

モジュラス演算子を使用%して、それらが回答の分数であるかどうかを確認し、その確認に基づいて増分することができます。

int tempVal = 56/50;
if ((56 % 50) > 0){
     tempVal ++;
 }
于 2013-03-25T11:20:58.007 に答える
1

どうですか

int firstValue = ...;
int secondValue = ...;

int result = (firstValue + (secondValue - 1)) / (secondValue);
于 2013-03-25T11:26:14.770 に答える
0

int tempVal = (56 + (50 - 1)) / 50;

より一般的に(正の値の場合): int result = (value + (divisor - 1)) / divisor;

非常に基本的な切り上げ。すべてのプログラマーのツールボックスに含まれている必要があります。

于 2013-03-25T11:25:38.677 に答える
-1

使用するだけceil()です:

int tempVal =  ceil((float)56/50);
于 2013-03-25T11:24:57.320 に答える