回答

2

你會得到什麼NSLog(@「%。3g」,1.12345)?

我做了一些測試,因爲我理解你的問題,你在正確的軌道上。這是我的結果:

NSLog(@"%g", 1.000000); => 1 
NSLog(@"%g", 1.123456789); => 1.12346 
NSLog(@"%.1g", 1.123456789); => 1 
NSLog(@"%.2g", 1.123456789); => 1.1 
NSLog(@"%.3g", 1.123456789); => 1.12 
NSLog(@"%.4g", 1.123456789); => 1.123 

爲了得到自己想要使用什麼@ 「%4克。」

+1

謝謝您的答覆,但它仍然無法正常工作。 –

+1

%.3g不會顯示半個大數字,例如100 000.它被打印爲1E + 05,這並不理想:D %.3f似乎適合最好的,但總是在整數時留下尾隨零?.. :( –

+0

我怎麼會得到123456.1234打印爲123456.12, 以及123456.00打印爲123456 兩位小數,只有在需要的時候.. –

11

我回顧了通過IEEE Specification「格式字符串」的能力,據我所知,你希望的行爲是不可能的。

我推薦給你使用NSNumberFormatter類。我寫了一個符合你希望的行爲的例子。我希望幫助:

NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease]; 
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[numberFormatter setMaximumFractionDigits:2]; 
[numberFormatter setDecimalSeparator:@"."]; 
[numberFormatter setGroupingSeparator:@""]; 
NSString *example1 = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:123456.1234]]; 
NSLog(@"%@", example1); 
NSString *example2 = [numberFormatter stringFromNumber:[NSNumber numberWithFloat:123456.00]]; 
NSLog(@"%@", example2); 
+0

一月魏因考夫 - 謝謝你這麼多驚人的身邊有喜歡的人!你願意用你自己的時間爲別人找到答案! –

+0

+1用於調查IEEE規格。Trooper。 –

0

這裏是揚對雨燕4溶液:

let numberFormatter = NumberFormatter() 
numberFormatter.numberStyle = .decimal 
numberFormatter.maximumFractionDigits = 2 
numberFormatter.decimalSeparator = "." 
numberFormatter.groupingSeparator = "" 
let example1 = numberFormatter.string(from: 123456.1234)! 
print(example1) 
let example2 = numberFormatter.string(from: 123456.00)! 
print(example2) 
相關問題