在我的应用程序中,我有一个金额字段。它应该只接受小数点前的 6 位数字和小数点后的任意数字,这些数字将四舍五入为 2 位数字。如何做到这一点?
例如,输入 12345678 可以在单击 RETURN 键时被截断为 123456。
同样的方法,
12345678.75 -> 123456
123456.456 -> 123456.46
最佳答案
此代码应该有所帮助。
double input = 12345678.75;
double output;
NSString *string = [NSString stringWithFormat:@"%lf", input];
int dotPosition = [string rangeOfString:@"."].location;
if(dotPosition == NSNotFound || dotPosition > 6)
{
output = [string substringToIndex:6].doubleValue;
}
else
{
output = round(input * 100) / 100;
}
根据 iPhoneDev 的评论更新:
代码的前一部分接受并返回 double 值。
这是处理字符串的代码:
NSString * input = @"123456.754";
NSString * output;
int dotPosition = [input rangeOfString:@"."].location;
if(dotPosition == NSNotFound || dotPosition > 6)
{
output = [input substringToIndex:6];
}
else
{
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.decimalSeparator = @".";
[formatter setRoundingMode: NSNumberFormatterRoundHalfUp];
[formatter setMaximumFractionDigits:2];
output = [formatter stringFromNumber:@(input.doubleValue)];
}
关于iphone - ios 中的金额值截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18865342/