2011-10-18 80 views
1

我想將字符串轉換爲數字使用NSNumberFormatter。在我的應用程序中,輸入小數點後兩位數以上的字符串無效,即@"3.1"@"3.14"是有效輸入,但@"3.141"不是。驗證字符串使用NSNumberFormatter

NSNumberFormatter的文檔說,setMaximumFractionDigits:「[s]是接收器允許輸入的小數點分隔符後的最大位數」。

所以,我很驚訝,當這個代碼:

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; 
numberFormatter.maximumFractionDigits = 2; 
NSNumber *number = [numberFormatter numberFromString:@"3.141"]; 
NSLog(@"%@", number); 

接受@"3.141",給了我下面的輸出:

3.141 

我期待的@"3.141"的轉換失敗(並返回nil)因爲它具有超過小數點分隔符後允許的最大位數。

很明顯,我不理解這裏的基本內容。難道NSNumberFormatter不使用maximumFractionDigits作爲驗證字符串輸入的一部分嗎?

回答

1

因爲缺乏其他的答案或本作的官方文檔中的任何跡象猜測:沒有,解析數字時NSNumberFormatter不支持全面的驗證,並maximumFractionDigits格式時纔有意義。這似乎與sscanf,strtof等一致。

-1

NSNumberFormatter的numberFromString:方法返回NSNumber如果它可以正確解析字符串,或者如果它不能正確解析字符串,則返回nil。

+1

這沒有格式化「拒絕」的數量。 – millimoose