繁体   English   中英

Objective-C:小数点左右的数字

[英]Objective-C: Separate number right/left of decimal

我正在尝试将左数和右数与浮点数分开,以便可以将它们分别转换为字符串。 因此,例如5.11 ,我需要能够将5变成一个字符串,并将11变成另一个字符串。

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

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

单程:

  1. 使用stringWithFormat转换为字符串“ 5.11”。
  2. 使用componentsSeparatedByString分隔为“ 5”和“ 11”的数组。
  3. stringWithFormat结合使用。

您可以NSString stringWithFormat使用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 ft 11 in将为5 * 12 * 16 + 11 * 16 = 1136。

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

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

// Output : 5'11"

暂无
暂无

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

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