如何将数字舍入到零小数位

时间:2010-08-02 13:12:22

标签: objective-c

如何将NSNumber舍入到零小数空格,在下面的行中它似乎保留小数空格:

NSNumber holidayNightCount = [NSNumber numberWithDouble:sHolidayDuration.value];

5 个答案:

答案 0 :(得分:14)

通常转换为int truncates。例如,3.4变为3(根据需要),但3.9也变为3。如果发生这种情况,请在投射前添加0.5

int myInt = (int)(sHolidayDuration.value + 0.5);

答案 1 :(得分:12)

这是一个冗长的方法

float test = 1.9;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setRoundingMode:NSNumberFormatterRoundHalfUp];
[formatter setMaximumFractionDigits:0];
NSLog(@"%@",[formatter  stringFromNumber:[NSNumber numberWithFloat:test]]);
[formatter release];

答案 2 :(得分:3)

如果你只需要一个整数,为什么不使用int

int holidayNightCount = (int)sHolidayDuration.value;

根据定义,int没有小数位

如果需要使用NSNumber,可以将Double转换为Int,然后使用int创建NSNumber。

int myInt = (int)sHolidayDuration.value;
NSNumber holidayNightCount = [NSNumber numberWithInt:myInt];

答案 3 :(得分:1)

您还可以执行以下操作:int roundedRating =(int)round(rating.floatValue);

答案 4 :(得分:0)

使用旧的C函数floor()对数字进行布局,然后您可以创建更合适的NSInteger,请参阅: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/floor.3.html ....

NSInteger holidayNightCount = [NSNumber numberWithInteger:floor(sHolidayDuration.value)].integerValue;

此处有关此主题的更多信息:http://eureka.ykyuen.info/2010/07/19/objective-c-rounding-float-numbers/

或者您可以使用NSDecimalNumber功能来舍入数字。