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