0
所以我編寫了一個計算器在目標C中,我已經格式化顯示在.4g,因爲我只想要有效數字和4位小數。這工作正常:) 我想要做的是不顯示2.34E + 05等,當它顯示一個像234,000更長的數字。我已經允許它自動化標籤中的文字,所以我知道這不僅僅是標籤太小。 是否有一段代碼會顯示實際的數字而不是科學記數法?客觀C計算器顯示科學記數法
所以我編寫了一個計算器在目標C中,我已經格式化顯示在.4g,因爲我只想要有效數字和4位小數。這工作正常:) 我想要做的是不顯示2.34E + 05等,當它顯示一個像234,000更長的數字。我已經允許它自動化標籤中的文字,所以我知道這不僅僅是標籤太小。 是否有一段代碼會顯示實際的數字而不是科學記數法?客觀C計算器顯示科學記數法
格式化爲%f
而不是%g
將不會使用standard form。
看看這個specification。
編輯1:
我發現this answer,以幫助四捨五入。
-(float) round:(float)num toSignificantFigures:(int)n {
if(num == 0) {
return 0;
}
double d = ceil(log10(num < 0 ? -num: num));
int power = n - (int) d;
double magnitude = pow(10, power);
long shifted = round(num*magnitude);
return shifted/magnitude;
}
我然後合併這兩個選項來獲得:
NSLog(@"%.0f", [self round:number toSignificantFigures:4]);
編輯2:
這個怎麼樣:
- (NSString *) floatToString:(float) val {
NSString *ret = [NSString stringWithFormat:@"%.5f", val];
unichar c = [ret characterAtIndex:[ret length] - 1];
while (c == 48 || c == 46) { // 0 or .
ret = [ret substringToIndex:[ret length] - 1];
c = [ret characterAtIndex:[ret length] - 1];
}
return ret;
}
我沒有測試過這,但它看起來好像將小數限制爲5 ,然後刪除任何結尾的零或小數點。
但後來%f顯示像234.00000號碼,我不希望非顯著數字? – Craig 2012-08-13 08:49:30
您仍然可以使用'%.4f'來限制小數。 – 2012-08-13 08:52:53
我會嘗試改變'g'到'f' – 2012-08-13 09:03:17