2011-08-15 65 views
0

我可以知道如何在對象C中四捨五入一個NSNumber嗎?如何四捨五入NSNumber並在對象C中創建一系列數字

for(int i=6; i>=0; i--) 
{ 
    DayOfDrinks *drinksOnDay = [appDelegate.drinksOnDayArray objectAtIndex:i]; 

    NSString * dayString= [NSDate stringForDisplayFromDateForChart:drinksOnDay.dateConsumed]; 

    [dayArray addObject:dayString];//X label for graph the day of drink. 

    drinksOnDay.isDetailViewHydrated = NO; 

    [drinksOnDay hydrateDetailViewData]; 

    NSNumber *sdNumber = drinksOnDay.standardDrinks; 
    [sdArray addObject: sdNumber];  
} 

這個sdArray裏面都是這樣的數字,像這樣2.1,1.3,4.7,3.1,4.8,15.1,7.2;

我需要繪製一個Y軸圖,所以我需要一個字符串,無論是從NSNumber來顯示 這個{@「0」,@「2」,@「4」,@「6」的NSString ,@「8」,@「10」,@「12」,@「14」,@「16」}。因爲我需要從零開始,所以我需要確定哪個是最大的數值。在這種情況下,將在圖中顯示16的15.1。而不是做一個靜態標籤,我想做一個動態標籤。

enter image description here 你在圖中看到的是靜態編號不動態。

我很抱歉錯過了重要的信息。

感謝所有的意見

+2

不明白你想要什麼,因爲我可以得到你想要的,當你寫「四捨五入」 – gsempe

+1

同樣的意思,你在哪裏NSNumbers都告訴你是NSString的 – Mark

+1

你有7串輸入(不是數字),並且在我不理解關係的情況下需要輸出9個值。請發佈一個例子,說明如何從第一個陣列到第二個陣列。 – Joe

回答

1

您的編輯現在更有意義。這是一個從0到最大值的例子,在NSArrayNSNumber s(假設所有值都是正值,可以通過查找最小浮點值來更改爲支持負值)。

NSArray *sdArray = [NSArray arrayWithObjects: 
        [NSNumber numberWithFloat:2.1], 
        [NSNumber numberWithFloat:1.3], 
        [NSNumber numberWithFloat:4.7], 
        [NSNumber numberWithFloat:3.1], 
        [NSNumber numberWithFloat:4.8], 
        [NSNumber numberWithFloat:15.1], 
        [NSNumber numberWithFloat:7.2], 
        nil]; 

//Get max value using KVC 
float fmax = [[sdArray valueForKeyPath:@"@max.floatValue"] floatValue]; 

//Ceiling the max value 
int imax = (int)ceilf(fmax); 

//Odd check to make even by checking right most bit 
imax = (imax & 0x1) ? imax + 1 : imax; 

NSMutableArray *array = [NSMutableArray arrayWithCapacity:(imax/2) + 1]; 
//Assuming all numbers are positive 
//(should probably just use unsigned int for imax and i) 
for(int i = 0; i <= imax; i +=2) 
{ 
    [array addObject:[NSString stringWithFormat:@"%d", i]]; 
} 

NSLog(@"%@", array); 
+0

謝謝Joe,這個樣本對我來說效果不錯:) – Desmond

2

查覈在math.h中的數學函數,有一些不錯的東西有沒有像

extern double round (double); 
extern float roundf (float); 

至於你的問題的其餘部分,你可能要解析你的字符串分成數字,執行你想要的任何動作(舍入,排序等),然後把它們放回字符串中。