decimal value rounding off to next higher value in ios

人走茶凉 提交于 2019-12-06 11:36:13

问题


In my app, am accepting amount value(float) and saving it. In the amount field, the user may enter any number of digits after decimal point. But when i read it and save, it should be only two digits after the decimal point. this scenario works properly with my code. but the problem is, if the user enters the value 2.468, it is saved as 2.47. but if the user input is 2.245, in this case i need to be saved as 2.25 but it gets saved as 2.24 only.

and my code is

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;

回答1:


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

or

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



回答2:


try this Code..

 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;



回答3:


you add this code:

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

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



回答4:


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]];

The NSString numberString has the rounded off value..



来源:https://stackoverflow.com/questions/17986616/decimal-value-rounding-off-to-next-higher-value-in-ios

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!