在我的代碼中,我有一個雙號2.555
。我通過NSLog使用%.2f
來顯示它有2.55
,但輸出是2.56。這是我不想要的數字的四捨五入!我知道有ceil(double)
和floor(double)
被使用,但他們不幫助我在這裏。防止雙數舍入
double div = a/b;
NSLog(@"DIV = %.f", div);
在我的代碼中,我有一個雙號2.555
。我通過NSLog使用%.2f
來顯示它有2.55
,但輸出是2.56。這是我不想要的數字的四捨五入!我知道有ceil(double)
和floor(double)
被使用,但他們不幫助我在這裏。防止雙數舍入
double div = a/b;
NSLog(@"DIV = %.f", div);
沒有看到您的代碼是不可能找到錯誤。下面的代碼將根據您的需要工作。
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setRoundingMode:NSNumberFormatterRoundDown];
[numberFormatter setMaximumFractionDigits:2];
NSString *numberAsString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:2.555]];
NSLog(@"%@",numberAsString);
[numberFormatter release];
,你可以參考,這個鏈接NSNumberFormatter
哦謝謝它確實工作。難道不能以更簡單的方式完成嗎?或者我應該始終記住NSNumberFormatter? – HusseinB 2013-03-16 12:54:25
問題在於打印格式說明符如何在C中工作。這是一個合理的Objective-C解決方案。 – uchuugaka 2013-03-16 12:56:43
它不能以更簡單的方式完成然後這(據我所知)。你必須爲此使用NSNumberFormatter。 – Aravindhan 2013-03-16 12:59:00
我覺得還有一個更簡單的方法來做到這一點。 如果我正確理解你,你不想使用floor(),因爲你想保持「div」的內容不變。如果這是正確的,那麼你可以做到以下幾點。 NSLog(@「DIV =%.2f」,trunc(div * 100)/ 100);
NSLog(@「DIV =%.2f」,floor(div * 100)/ 100);
以上將在第二秒後刪除小數點,但僅用於顯示。 「div」的內容不變。
你可以在這裏發佈你的代碼嗎? – Aravindhan 2013-03-16 12:43:46
問題是,爲什麼你不想讓數字四捨五入,但只是截斷了?對於'2.555',輸出'2.55'無效。 – Sulthan 2013-03-16 13:36:33