2013-08-01 37 views
2

在我的應用程序中,接受金額值(float)並保存它。在金額字段中,用戶可以在小數點後輸入任意數量的數字。但是,當我讀取並保存時,它應該只有小數點後的兩位數。這個場景適用於我的代碼。但問題是,如果用戶輸入值2.468,它將被保存爲2.47。但如果用戶輸入是2.245,在這種情況下,我需要保存爲2.25,但它只能保存爲2.24。十進制值四捨五入到ios中的下一個更高值

和我的代碼是

AmountValue = [NSString stringWithFormat:@"%f",[AmountTxt1.text floatValue]]; 
float Rate_int = [AmountValue floatValue]; 

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init]; 
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
NSString *str1 = [NSString stringWithFormat:@"%@",[currencyFormatter stringFromNumber:[NSNumber numberWithFloat:Rate_int]]]; 

TotalAmtTxt.text = str1; 
+0

? – Rajneesh071

回答

2
double Rate_int1 = [input doubleValue]; 

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setRoundingMode: NSNumberFormatterRoundHalfUp]; 
[formatter setMaximumFractionDigits:2]; 

NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithDouble:Rate_int1]]; 

NSString的numberString根據您的2.243將是什麼輸出具有四捨五入值..

1

試試這個代碼..

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setMaximumFractionDigits:2]; 
[formatter setRoundingMode: NSNumberFormatterRoundHalfUp]; 

NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:Rate_int]]; 

TotalAmt.txt = numberString; 
+0

沒有..即使在應用代碼之後,2.245變得圓整到2.24 ..我需要將其舍入到2.25 .. – user2640613

+0

實際上根據數學中的圓函數,當第三個數字是5並且舍入到第二個數字時,選項總是四捨五入。但是,如果結果(目標數字)會變爲平均值,但是如果目標數字變爲奇數,則最好採用四捨五入的方法。它顯示了dat這樣做在一系列計算中引入了較小的舍入誤差。 例如:2.235四捨五入至2.24,但2.245四捨五入至2.24(上升會得到2.25)。 另外:2.755被舍入爲2.76,但2.765被舍入爲2.76 [檢查這個鏈接..](http://facstaff.unca.edu/tlbrown/RM2/roundingVer2.pdf) – iProgrammer

1

你添加以下代碼:

[currencyFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[currencyFormatter setRoundingMode:NSNumberFormatterRoundHalfUp]; 
[currencyFormatter setMaximumFractionDigits:2]; 

NSLog(@"%@",[currencyFormatter stringFromNumber:[NSNumber numberWithDouble:2.245]]); 
+0

它會打印23.44,但他想要它作爲23.45 – Rajneesh071

+0

@ Rajneesh071你輸入2.245和檢查問題 –

+0

@ Rajneesh071問題是:用戶輸入是2.245,在這種情況下,我需要保存爲2.25 –

2
float a=2.245; 
float b=ceilf(a*100)/100; 

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init]; 
    [currencyFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
    [currencyFormatter setRoundingMode:NSNumberFormatterRoundCeiling]; 
    [currencyFormatter setMaximumFractionDigits:2]; 
+0

謝謝。發行固定.. – user2640613

+0

,但它行爲奇怪..如果我輸入20.245,它被保存爲20.25。但是如果我輸入10.245,它將被保存爲10.24。同樣,對於某些值,它可以正確工作,對於某些,它不會。 – user2640613

+0

nop,其10.25 .. – Rajneesh071