NSNumberFormatter *formatNumber = [[NSNumberFormatter alloc] init];
[formatNumber setRoundingMode:NSNumberFormatterRoundUp];
[formatNumber setMaximumFractionDigits:0];
NSNumber *height = [formatNumber numberFromString:self.heightField.text];
NSNumber *width = [formatNumber numberFromString:self.widthField.text];
NSNumber *depth = [formatNumber numberFromString:self.depthField.text];
NSNumber *weight = [formatNumber numberFromString:self.weightField.text];
NSLog(@"height %@", height);
NSLog(@"width %@", width);
NSLog(@"depth %@", depth);
NSLog(@"weight %@", weight)
我试图将UITextField的高度,宽度,深度和重量四舍五入到最接近的整数,但它仍然显示整个小数点。 有人可以协助我的代码进行整理吗?
THX。
答案 0 :(得分:10)
没有仪式和现代目标C:
NSNumber *roundedUpNumber = @(ceil(self.field.text.doubleValue));
答案 1 :(得分:5)
您可以使用此
NSString *numericText = self.field.text;
double doubleValue = [numericText doubleValue];
int roundedInteger = ceil(doubleValue);
NSNumber *roundedUpNumber = [NSNumber numberWithInt:roundedInteger];
要点:
double
答案 2 :(得分:2)
文档相当混乱,听起来像您在NSNumberFormatter
实例上设置的限制适用于string-> number和number->字符串转换。但事实并非如此,正如a The Boffin Lab post所描述的那样:
很简单,我们只需设置NSNumberFormatter即可为我们处理。 但是,对Apple Technical进行了一些测试和一些检查 稍后支持它似乎只适用于转换 数字到文本。文件中没有说明这一点 case'input'具体表示NSNumber,此设置为 在向另一个方向转换时不使用...
因此,请使用ceil()
,round()
,floor()
等标准C函数来调整数字。
另一种方法是将NSNumberFormatter
子类化,使其在两个方向上都遵守标准。
最后,如果你真的喜欢慢速代码,或者你只是想要模拟一些东西,你可以将格式化器应用三次:string-> number-> string-> number
看起来像 * :
NSNumber *n = [formatNumber numberFromString:
[formatNumber stringFromNumber:
[formatNumber numberFromString:@"1.2345"]]];
* 孩子们,不要在家里试试。