我發現%g只在需要時才顯示小數。如果數字是整數,則不會添加尾隨.000,所以這很好。 但在例如1.12345的情況下,我希望它將1.123的答案縮短。 而在1.000的情況下,我只想顯示1,因爲%g已經做到了。如果需要,正確使用格式說明符最多顯示三位小數,否則爲零小數?
我試過在字符串中指定%.3g,但那不起作用。 如果有人有答案,我會很感激!
我發現%g只在需要時才顯示小數。如果數字是整數,則不會添加尾隨.000,所以這很好。 但在例如1.12345的情況下,我希望它將1.123的答案縮短。 而在1.000的情況下,我只想顯示1,因爲%g已經做到了。如果需要,正確使用格式說明符最多顯示三位小數,否則爲零小數?
我試過在字符串中指定%.3g,但那不起作用。 如果有人有答案,我會很感激!
你會得到什麼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克。」
我回顧了通過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);
一月魏因考夫 - 謝謝你這麼多驚人的身邊有喜歡的人!你願意用你自己的時間爲別人找到答案! –
+1用於調查IEEE規格。Trooper。 –
這裏是揚對雨燕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)
謝謝您的答覆,但它仍然無法正常工作。 –
%.3g不會顯示半個大數字,例如100 000.它被打印爲1E + 05,這並不理想:D %.3f似乎適合最好的,但總是在整數時留下尾隨零?.. :( –
我怎麼會得到123456.1234打印爲123456.12, 以及123456.00打印爲123456 兩位小數,只有在需要的時候.. –