我正面临一个问题,但似乎无法找到解决方案。我有一个用户输入数字的文本字段。问题是,当用户在小数位后输入最后一位数为零时,它不会服用。 - 42.70打印为42.7。找到下面的代码
NSNumberFormatter *_numberFormatter =[NSNumberFormatter new];
_numberFormatter.maximumFractionDigits=2;
_numberFormatter.minimumIntegerDigits=1;
_numberFormatter.roundingMode=kCFNumberFormatterRoundCeiling;
_numberFormatter.allowsFloats=YES;
_numberFormatter.groupingSeparator=@",";
_numberFormatter.usesGroupingSeparator=YES;
_numberFormatter.groupingSize=3;
_numberFormatter.minimum=[NSNumber numberWithInt:0];
[_numberFormatter setLenient:YES];
[_numberFormatter setUsesSignificantDigits:NO];
和
NSNumber *number = [nf numberFromString:combinedString];
NSString *formattedString = [nf stringFromNumber:number];
格式化的字符串是打印输入的值,如果在最后一个位置输入sans 0,但如果有任何其他数字,则打印正确的数字,如42.78打印,但43.70打印为43.7。
我缺少设置一些参数。需要任何帮助
先谢谢
答案 0 :(得分:2)
同时设置
_numberFormatter.maximumFractionDigits = 2;
_numberFormatter.minimumFractionDigits = 2;
如果您始终要在小数分隔符后打印两位数字。
答案 1 :(得分:0)
您可以使用:
NSNumberFormatter *fmt = [[NSNumberFormatter alloc] init];
[fmt setPositiveFormat:@"0.##"];
NSNumber *n = [NSNumber numberWithFloat:47.78];
NSLog(@"%@", [fmt stringFromNumber:n]);
它将打印47.78
答案 2 :(得分:0)
发现我们必须进行操作以从我们这边添加零.iOS以奇怪的方式工作并且不允许它。所以下面是我的代码。希望它对其他人也有帮助。
NSArray *formatArr = [combinedString componentsSeparatedByString:@"."];
NSString *str = [formatArr lastObject];
NSString *code;
if ([str length] >0) {
code = [[formatArr lastObject] substringFromIndex: [str length] - 1];
if ([str isEqualToString:@"00"])
{
}
else
{
if ([combinedString hasSuffix:@".0"])
{
formattedString=[formattedString stringByAppendingString:@".0"];
}
else if ([code isEqualToString:@"0"]) {
formattedString = [formattedString stringByAppendingString:@"0"];
}
}
}
else
{
if ([combinedString hasSuffix:@".0"])
{
formattedString=[formattedString stringByAppendingString:@".0"];
}
}
Combinedstring是输入用户正在输入。我正在检查'。'放置并检查最后一位数是否为零。如果是,则从我自己的位置添加零。现在用户可以在输入时看到43.50而不是43.5