我需要將NSString轉換爲double。如果這個字符串本質上是整數,那麼結果是OK。如果字符串是小數,也許還有組分隔符,那麼結果是錯誤的。任何分隔符的國王(不管是「。」還是「,」)whis在字符串中首先被用作小數分隔符。NSString的方法doubleValue給出了意想不到的結果
我試圖用NSScanner做一些事情,但我根本不明白如何解決這個問題。
想法如下:無論我放在文本字段整數,或小數有或沒有組分隔符,我想獲得正確的十進制數。
我會非常高興得到任何幫助。
提前致謝!
我需要將NSString轉換爲double。如果這個字符串本質上是整數,那麼結果是OK。如果字符串是小數,也許還有組分隔符,那麼結果是錯誤的。任何分隔符的國王(不管是「。」還是「,」)whis在字符串中首先被用作小數分隔符。NSString的方法doubleValue給出了意想不到的結果
我試圖用NSScanner做一些事情,但我根本不明白如何解決這個問題。
想法如下:無論我放在文本字段整數,或小數有或沒有組分隔符,我想獲得正確的十進制數。
我會非常高興得到任何幫助。
提前致謝!
[string doubleValue]
和常規NSScanner
總是使用.
作爲小數分隔符。本地化NSScanner
使用當前語言環境中的小數分隔符。但是他們都不知道關於分組人物的事情,所以他們不合適。
你必須使用NSNumberFormatter
來做到這一點。 @Gobra說最好在界面生成器中進行設置。但你也可以做到這一點在這樣的代碼:
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle: NSNumberFormatterDecimalStyle];
double value = [[formatter numberFromString: string] doubleValue];
如果您需要了解羯羊字符串是有效還是無效,你可以檢查是否通過numberFromString:
返回NSNumber
對象nil
你向它發送doubleValue
消息之前。
既然您提到了文本字段,我假設問題是將某些數值綁定到NSTextField。這裏的正確方法是使用NSValueFormatter,在IB調色板中有一個可定製的數字格式器。只需將其放到文本框中並設置規則即可。
即使該任務與UI無關,仍然可以使用[NSValueTransformer valueTransformerForName:aName]創建轉換並將其轉換爲值。
還發布了一些代碼,從你迄今爲止的嘗試。 – JeremyP 2010-09-21 16:14:42