2013-03-07 78 views
7

我想要一個數字字符串,最大2位小數精度,而其餘小數只是修剪掉而不是四捨五入。例如:如何避免四捨五入NSNumberFormatter

I have: 123456.9964

I want: 123456.99 -> Just want to trim rest of the decimal places

我曾嘗試是:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle]; 
[numberFormatter setMaximumFractionDigits:2]; 
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithFloat: 123456.9964]]; 
NSLog(@"%@", numberAsString); 

沒有什麼設置舍入模式爲 「無」。我還能做些什麼來保持十進制樣式格式和修整後的十進制數字?任何幫助將不勝感激。謝謝。

回答

13

對我來說,以下工作:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[numberFormatter setMaximumFractionDigits:2]; 
// optional - [numberFormatter setMinimumFractionDigits:2]; 
[numberFormatter setRoundingMode:NSNumberFormatterRoundDown]; 
NSNumber *num = @(123456.9964); 
NSString *numberAsString = [numberFormatter stringFromNumber:num]; 
NSLog(@"%@", numberAsString); 

輸出是:你的問題的123,456.99

部分是利用numberWithFloat:代替numberWithDouble:。你的號碼有太多的數字float

+0

謝謝它的工作:) – NightFury 2013-03-07 06:52:05

0
[numberFormatter setRoundingMode: NSNumberFormatterRoundDown]; 

使用此代碼。

+0

不工作。我得到的輸出爲:123457,而我想要123456.99 – NightFury 2013-03-07 06:11:13

+0

@AnumAmin你還指定了2的最小分數位數? – rmaddy 2013-03-07 06:14:07

+0

@maddy如果我指定分數爲2(這是我的要求),我仍然得到123457.00 – NightFury 2013-03-07 06:19:02

1

您可以使用此

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
[numberFormatter setRoundingMode:NSNumberFormatterRoundDown]; 
[numberFormatter setMaximumFractionDigits:2]; 
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble: 123456.9964]]; 
NSLog(@"%@", numberAsString); 
+0

也感謝你...對不起,我只能接受一個答案。 – NightFury 2013-03-07 06:56:51

+0

沒問題... :) – Aravindhan 2013-03-07 07:13:09

0

,你也可以只用圓(),然後將其轉換成字符串之後

var y = round(100 * 123456.8864)/100 

var x:String = String(format:"%.2f", y) 
println("x: \(x)") 

將打印X:123456.89,捨去了8到9 。

+0

哎呦!忘了沒有舍入的部分。 – 2015-04-05 15:29:36