我想從浮點數中分離左和右數字,這樣我就可以將每個數字轉換成一個字符串。因此,例如,5.11,我需要能夠將轉換爲一個字符串,並將轉換爲另一個字符串。Objective-C:單獨的數字右/左十進制
// from float: 5.11
NSString * leftNumber = @"5";
NSString * rightNumber = @"11";
從這個,我可以把5.11到5' 11"
我想從浮點數中分離左和右數字,這樣我就可以將每個數字轉換成一個字符串。因此,例如,5.11,我需要能夠將轉換爲一個字符串,並將轉換爲另一個字符串。Objective-C:單獨的數字右/左十進制
// from float: 5.11
NSString * leftNumber = @"5";
NSString * rightNumber = @"11";
從這個,我可以把5.11到5' 11"
一種方法:
stringWithFormat
轉換成字符串 「5.11」componentsSeparatedByString
分隔成「5」和「11」數組。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英尺11在將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"
你知道,當然,前提是小數確實不是「地圖」英尺/英寸,而是(2位數)英尺和百分之一。即使這個值是有效的英尺/英寸開始,閱讀作爲一個浮點數,然後「重新構造」它可能會導致舍入誤差,如果你不小心。 –
我知道一個十進制數不會映射到高度測量值,謝謝。 – WrightsCS
你瞭解舍入問題嗎? –