2012-04-29 41 views
2

我遇到問題。我需要得到兩個數字並將它們加在一起,使得一個數字是另一個數字的小數點。例如:將數字添加到小數點後面(Objective-c)

double number1 = 20; 
double number2 = 142; 

我需要將這些數字加起來得到20.142。有沒有辦法做到這一點?

感謝

回答

-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除以10.0,直到它小於1.0(這意味着它現在在[0, 1)範圍內,假設它是正數)。然後我們只是將這兩個數字加起來,並將其存儲在finalnum中,並且如果negativetrueYES),則否定finalnum

該解決方案也可以使用基數爲10的對數來確定將number2除以的數量,但最有可能需要更長的時間。

你也可以通過turning those numbers into const char* or CFString (Objective-C) strings and then concatenate them followed by an interpretation of the resulting string as a double來解決這個問題,但是這會花費更長的時間。

有兩點需要說明此代碼:

  1. number1number2必須是整數(如果number1是,比方說,1.5number225.7finalnum1.757
  2. number2必須爲正
2

一個天真的方式:

double res, number1 = 20, number2 = 142; 
while (number2 >= 1) { 
    number2 /= 10; 
} 
res = number1 + number2; 
+0

@BinyaminSharet要不要我給你預期的答案,如果142是負值? – CoreCode 2012-04-29 00:34:25

+0

@CoreCode - 不,如果number2是-142,結果會如何? – MByD 2012-04-29 00:35:32

+3

您可能想要編輯您的問題以指定您正在處理負數,併發布預期的輸出結果(如果number2爲負數)。這對number1是有意義的,但由於number2只是附加到小數點後面,所以沒有任何意義。 – BTownTKD 2012-04-29 00:42:10

4

您可以使用數學。(頓頓DUNNNNNNN!)

double number3 = number1 + (number2/1000); 

所以問題變得;你如何確定10分的第二個數字的能力?

確實有很多方法可以做到這一點。就在我頭頂,你可以運行一個循環,不斷增加10的功率,直到它大於當前的數值2。

如果你正在處理的NUMBER1負數,那麼你要添加一個如果語句來看看,如果數字是0 <如果是這樣,你會想減去而不是相加。

如果你正在處理number2的負數,那麼......這太愚蠢了。

+0

lol dun dun dun :-) – Lefteris 2012-04-29 00:31:12

+4

math.ceil(log10(number2))應該對你提出的問題有所幫助。 – Femaref 2012-04-29 00:31:40

5

簡單的解決方案:

double result = [[NSString stringWithFormat:@"%i.%i", (int)number1, (int)number2] doubleValue];