2

I have a problem. I need to get two numbers and add them together in a way that one is the decimal point of the other. For example:

double number1 = 20;
double number2 = 142;

I need to add these numbers together to get 20.142. Is there a way to do this?

Thanks

4

4 に答える 4

5

単純な解決策:

double result = [[NSString stringWithFormat:@"%i.%i", (int)number1, (int)number2] doubleValue];
于 2012-04-29T01:00:14.000 に答える
4

あなたは数学を使うことができます。(ドンドンドンドンドン!)

double number3 = number1 + (number2 / 1000);

したがって、問題は次のようになります。2 番目の数を割る 10 の累乗をどのように決定しますか?

確かにこれを行うには多くの方法があります。頭のてっぺんから、number2 の現在の値よりも大きくなるまで 10 のべき乗を連続的に増やすループを実行できます。

number1 の負の数を扱っている場合は、ifステートメントを追加して、その数が < 0 かどうかを確認します。その場合は、加算ではなく減算を行います。

number2 の負の数を扱っている場合は、まあ...それはばかげています。

于 2012-04-29T00:26:24.620 に答える
2

単純な方法:

double res, number1 = 20, number2 = 142;
while (number2 >= 1) {
    number2 /= 10;
}
res = number1 + number2;
于 2012-04-29T00:25:53.317 に答える
-1
bool negative = (number1 < 0.0);

if (negative)
    number1 = 0 - number1;
while (number2 >= 1.0)
    number2 = number2 / 10.0;

double finalnum = number1 + number2;
if (negative)
    finalnum = 0 - finalnum;

とても簡単です。最初に が負かどうかを判断し、number1負の場合は正にしてブール値フラグを設定します。次に、それがより小さくなるまで除算number2を続けます(つまり、正の範囲内にあることを意味します)。次に、2 つの数値を加算して に格納し、 ( ) の場合はを否定します。10.01.0[0, 1)finalnumnegativetrueYESfinalnum

この解は、10 を底とする対数を使用して除算する量を決定することもできますがnumber2、おそらく時間がかかります。

これらの数値をconst char*or CFString(Objective-C) 文字列に変換し、それらを連結してから結果の文字列を として解釈することでdoubleこれを解決することもできますが、これにはさらに時間がかかります。

このコードには 2 つの注意事項があります。

  1. number1およびnumber2整数でなければなりません(だった場合、number1たとえば、1.5だっnumber225.7としfinalnumたら1.757
  2. number2正でなければなりません
于 2012-04-29T00:26:11.290 に答える