Objective-C:十进制左右分开的数字

时间:2014-11-17 01:53:01

标签: objective-c nsnumberformatter cgfloat

我试图将左右数字从浮点数中分离出来,这样我就可以将每个数字转换为字符串。例如, 5.11 ,我需要能够将 5 转换为字符串,并将 11 转换为另一个字符串。

// from float: 5.11
NSString * leftNumber  = @"5";
NSString * rightNumber = @"11";

由此,我可以将 5.11 变成 5' 11"

3 个答案:

答案 0 :(得分:2)

一种方式:

  1. 使用stringWithFormat转换为字符串" 5.11"。
  2. 使用componentsSeparatedByString分隔成" 5"和" 11"。
  3. stringWithFormat结合使用。

答案 1 :(得分:2)

您可以使用NSString stringWithFormat和数学函数:

float n = 5.11;
NSString * leftNumber  = [NSString stringWithFormat:@"%0.0f", truncf(n)];
NSString * rightNumber = [[NSString stringWithFormat:@"%0.2f", fmodf(n, 1.0)] substringFromIndex:2];
NSLog(@"'%@' '%@'", leftNumber, rightNumber);

然而,这并不理想,特别是对于以常规单位表示长度,因为0.11英尺 11英寸。最好将长度表示为您支持的最小单位的整数(例如,1/16英寸),然后将其转换为实际长度以便显示。在这个表示中,5英尺11英寸将是5 * 12 * 16 + 11 * 16 = 1136。

答案 2 :(得分:1)

您可以使用数字格式化程序

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
formatter.decimalSeparator = @"'";
formatter.positiveSuffix = @"\"";
formatter.alwaysShowsDecimalSeparator = true;
NSString *numberString = [formatter stringFromNumber:@(5.11)];

// Output : 5'11"
相关问题