簡體   English   中英

如何將浮點數舍入到小數點后兩位?

[英]How to round a float to 2 decimal places?

這是我找出游戲速度的算法。

self.speed = .7-self.score / 50;

現在如何使self.speed舍入到小數點后兩位?

注意:我的回答假設您只關心小數位數,以便向用戶顯示該值。

當您設置NSNumberFormatter以便將數字格式化為要顯示的字符串時,請使用最多兩位小數位設置格式化程序。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];

NSString *formattedNumber = [formatter stringFromNumber:@(self.speed)];

如果需要特定的舍入方法,則可以選擇使用setRoundingMode:方法。

順便說一句-您不應該為此使用字符串格式,因為它沒有考慮用戶的語言環境來正確格式化數字。

浮點數以IEEE754格式處理,您不能直接決定要使用的小數位數,可以直接決定要使用的位數,也可以間接舍入數字的las部分:

NSString* str=[NSString stringWithFormat: @"%.2f", number];
number= atof([str UTF8String]);

但是就像maddy指出的那樣,僅在向用戶顯示數字時,才需要舍入/截斷不需要的十進制數字,因此在打印時只能使用%.2f格式說明符或使用格式化程序。

self.speed = (int)(self.speed * 100 + 0.5) / 100.0;

如果您想將其作為字符串:

NSString *speedString = [NSString stringWithFormat: @"%.2f", self.speed];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM