繁体   English   中英

NSNumber存储浮点数。 请没有科学记数法吗?

[英]NSNumber storing float. Please NO scientific notation?

我的代码看起来像这样

NSNumber *inputToNumber = [NSNumber numberWithFloat:[textField.text floatValue]];

来自文本字段的值实际上是电话号码。 它以令人讨厌的(2.0)78966e + 08的形式存储在NSNumber中

我怎样才能让NSNumber将其存储为0207896608?

我认为将电话号码存储到NSNumber中的基本思想存在缺陷:

  • 如何区分带0或不带0的数字?
  • 您如何存储来自国外的电话号码?

我将使用NSString代替NSNumber。

仅仅因为它被称为数字并不意味着“电话号码”就是与“ 5”或“ pi”相同的数字。

您应该将一个电话号码视为一个字符串,或者应该创建一个TelephoneNumber模型类来表示每个电话号码。

考虑到世界上有些地方的数字没有前导0,而前导0的数字与没有前导0的数字是不同的。

05843924 != 5843924

因此,不要再对NSNumber黑客一无所知,并建立自己的电话号码类。

科学符号在可能的计算机语言中用作非常大(或非常小的)数字的默认输出。 如果您希望数字以小数形式输出,则需要指定输出格式(实现因语言而异。)

另外,法甲ja是正确的。 您不应该将FLOAT用作电话号码,因为它会产生二进制舍入错误。 使用INT或STRING可以节省很多麻烦。

如果您需要能够将其处理为数字,则应该将其分解为多个部分,并将每个部分存储为整数。

01112223333
country code 0
area code 111
prefix 222
number 3333

或者,如果不需要处理它,则可以将整个内容存储为字符串。

您是否将电话号码存储在花车中? 您应该考虑使用整数或字符串。 也许:

NSNumber *inputToNumber = [NSNumber numberWithInt:[textField.text intValue]];

嗨,大家对此有何看法,似乎可以满足我的全部要求。 现在只有英国,所以我有机会时会担心本地化。

我用它来存储号码

NSNumber *inputToNumber = [NSNumber numberWithLongLong:(long long)[[textField.text stringByReplacingOccurrencesOfString:@" " withString:@""] longLongValue]];

并且这种方法格式化了我的电话号码,并处理了前面提到的0。

-(NSString *)phoneNumberString:(NSNumber *)phoneNumber {
    //Add a zero because NSNumber won't save a preceeding zero
    NSString *telephoneString = [[NSString alloc] initWithFormat:@"0%@", [phoneNumber stringValue]];

    if (telephoneString.length >= 4) {
        NSString *firstPart = [[NSString alloc] initWithString: [telephoneString substringToIndex:4]];
        NSString *secondPart = [[NSString alloc] initWithString: [telephoneString substringFromIndex:4]];

        //Add the two parts together with a space inbetween
        NSString *formattedTelephoneString = [NSString stringWithFormat:@"%@ %@", firstPart, secondPart];

        //send it back to the cellForRow TableCell Method
        [firstPart release];
        [secondPart release];
        [telephoneString release];

        return formattedTelephoneString;    
    }
    else {
        return telephoneString; 
    }
}

感谢所有的评论。 我将答案标记为任何建议使用NSString的人,因为我担心我将为此使用NSString而不是上面的解决方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM