我正在努力解决这个问题,我找不到任何资源:
我有一个NSNumber
我希望在UITextField
中显示,因此用户可以对其进行编辑。
所以我需要将此NSNumber
转换为NSString
,如下所示:
float value -> desired string value
1.0000000... -> 1
10.000000... -> 10
1.1230000... -> 1.123 or 1,123 depending on the locale
1000000.0... -> 1000000
我尝试使用NSNumberFormatter
,但后来我得到了大数字的空格或逗号:
1000000.0... -> 1,000,000 or 1 000 000 depending on the locale
我也试过
[NSString stringWithFormat:@"%g", val]
但是对于大数字我有一个科学的表达:
1000000.0 -> 1e+06
有人对此有成功经验吗?
答案 0 :(得分:3)
NSNumberFormatter
的方法如下:
- (void)setGroupingSeparator:(NSString *)string
我想,你可以回到你所拥有的变体:
1000000.0... -> 1,000,000 or 1 000 000 depending on the locale
并使用该函数设置其他参数:
[formatter setGroupingSeparator:@""];
或者尝试这种方法:
[formatter setUsesGroupingSeparator:NO];
答案 1 :(得分:3)
NSNumberFormatter
解决方案,您走的是正确的道路。
可是:
NSLocale
信息也带有Region格式化信息(使用美国语言环境或FR语言环境格式化数字会导致不同的格式和不同的表示形式)NSNumberFormatter
的选项来自定义格式,例如更改使用的分组分隔符,更改小数点分隔符等。通过这种方式,您可以真正自定义NSNumberFormatter
将数值表示为字符串的方式。
答案 2 :(得分:-2)
尝试将nsnumber值转换为NSInteger或CGFloat并将其存储在新变量中。然后将转换后的变量设置为uitextfield。
CGFloat floatNumber = [numberInNSNumber floatValue];
textfield.text = [NSString stringWithFormat:@"%0.2f",floatNumber];
我认为它应该对你有用.. !!