2014-11-17 11 views
1

我想從浮點數中分離左和右數字,這樣我就可以將每個數字轉換成一個字符串。因此,例如,5.11,我需要能夠將轉換爲一個字符串,並將轉換爲另一個字符串。Objective-C:單獨的數字右/左十進制

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

從這個,我可以把5.115' 11"

+0

你知道,當然,前提是小數確實不是「地圖」英尺/英寸,而是(2位數)英尺和百分之一。即使這個值是有效的英尺/英寸開始,閱讀作爲一個浮點數,然後「重新構造」它可能會導致舍入誤差,如果你不小心。 –

+0

我知道一個十進制數不會映射到高度測量值,謝謝。 – WrightsCS

+0

你瞭解舍入問題嗎? –

回答

2

一種方法:

  1. 使用stringWithFormat轉換成字符串 「5.11」
  2. 使用componentsSeparatedByString分隔成「5」和「11」數組。
  3. Combin e與stringWithFormat
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

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" 
相關問題