1
我一直在为此工作了两天。有时间咨询stackoverflow。NSNumberFormatter支持小数点分隔符,但不支持逗号分隔符
我有一个iOS用户设置,允许选择小数和分组分隔符。当分隔符是小数点时,它可以很好地工作,但当设置为小数点逗号时,所有数字条目都会自动舍入到最接近的整数,并且任何计算都会失去精度。
该方案是这样的:
//Use formatter to set decimal style for output
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMinimumFractionDigits:1];
[formatter setMaximumFractionDigits:5];
//Set number format from preferences
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSString *numberFormat = [userDefaults stringForKey:kNumberFormat];
if([numberFormat isEqualToString:@"Decimal Point"])
{
[formatter setDecimalSeparator:@"."];
[formatter setGroupingSeparator:@","];
}
else
{
[formatter setDecimalSeparator:@","];
[formatter setGroupingSeparator:@"."];
}
NSNumber *number = [NSNumber numberWithDouble: result];
NSString* formattedResult = [formatter stringFromNumber:number];
[display_ setText: [NSString stringWithFormat:@"%@", formattedResult]];
[formatter release];
在小数分隔模式5.5 + 5.5 = 11.0
但是,逗号分隔符模式5.5立即截断为在显示5.0和5.5 + 5.5 = 10 。
不是我想要的!
不明白逗号分隔模式。你在哪里以及如何需要?举一个小例子。我们会尽快解决这个问题。 – SayeedHussain
谢谢。实际上,我发现问题是由于在我的数字输入字符串中使用了“,”符号,然后它被转换为双精度数据以发送到分析器类进行处理(它是一种计算器)。我有一个允许点(“。”)或逗号(“,”)之间的小数点分隔符选择的设置。分隔符输入按钮设置为“,”时会出现问题。如果在[[self analyzer_ setFirstOperand:[[display_text] doubleValue]]中输入了“”,那么分析器将不接受该字符串作为double。所以我想弄清楚如何让这个工作。 – ndpmcintosh
另一件事。我知道有一些本地化方法可以设置十进制和分组符号分隔符,但我还没有弄清楚如何让它们工作。我想这样做,所以在数字格式为3.324,084而不是3,324,084格式的地方看起来很自然。如果我将分隔符按钮标题保留为“。”在逗号模式下它可以工作,除非用户在按下操作按钮之前必须看到不正确的十进制格式,然后立即显示它的格式以使用逗号形式并正确完成计算。功能,但不雅。 – ndpmcintosh