如何将NSNumber舍入到零小数空格,在下面的行中它似乎保留小数空格:
NSNumber holidayNightCount = [NSNumber numberWithDouble:sHolidayDuration.value];
答案 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功能来舍入数字。