2012-11-24 62 views
1

我想創建NSDecimalNumber,其格式如下:123.00,後面有兩個小數點,總是。我嘗試使用NSFormatter和許多其他方式,如從字符串轉換浮點數,然後從此字符串創建NSDecimalNumber,但它不起作用。 問題是我只需要這種格式的NSDecimalNumber,而不是NSString或任何其他。 感謝您的任何建議, 保羅格式化NSDecimalNumber問題

回答

0

你可能會從這個想法。

float num = 123.1254546; 
NSString *str = [NSString stringWithFormat:@"%.2f",num]; 
NSLog(@"%.2f %@",num,str); 
+0

感謝您快速答覆的例子,但是這不正是我需要的。我需要結果NSDecimalNumber,而不是NSString。我知道以正確的格式顯示它的方式,但是如果我嘗試將適當的NSString(如「123.00」)轉換爲NSDecimalNumber,則此值在NSDecimalNumber內再次轉換爲123。我認爲正確的方法是使用NSNumberFormatter,但我找不到類似的例子。 – user1849319

0

我認爲你只需要兩次做類型轉換操作波紋管

float value = 123.562; 
    int myDigit = value; 

它給出myDigit可變

NSLog(@"MyDigit in Decimal = %d",myDigit); 

產值123 MyDigit在小數= 123

現在,如果你想要一個像123.000輸出然後簡單地寫爲波紋管

float valueWithZiro = myDigit; 

NSLog(@"MyDigit with 000 == %3f",valueWithZiro); 

輸出是MyDigit在十進制= 123.000

0

NSDecimalNumber一樣的NSNumber,不能包含格式化信息。對象結構根本不支持它。它代表一個數字,而不是數字的顯示方式。

你可以將它轉換爲格式化的NSString(你說你不想要)。但你不能做你所問的。

使用NSNumberFormatter將其轉換爲格式化的NSString。這是允許您指定小數點和千位分隔符,顯示小數位數,貨幣符號等的對象。

0

也許您正在期待商店 NSNumberDecimal只有兩位數後小數? 如果是的話NSDecimalNumberBehaviors是你的朋友。 我也有類似的需求,並使用下列內容:

self.decimalHandlingBehaviorForApp = [NSDecimalNumberHandler 
             decimalNumberHandlerWithRoundingMode:NSRoundUp 
             scale:2 raiseOnExactness:NO 
             raiseOnOverflow:NO raiseOnUnderflow:NO 
             raiseOnDivideByZero:YES]; 

編輯:增加了使用它

// update the taxable total first 
self.cartTaxableTotal = [self.cartTaxableTotal decimalNumberByAdding:itemAdded.priceOfItem 
                 withBehavior:self.decimalHandlingBehaviorForApp];