我正在尝试进行一些数字舍入和转换为字符串以增强Objective-C程序中的输出.
我有一个浮点值,我想要舍入到最近的.5然后用它来设置标签上的文本.
例如:
1.4将是一串:1.5
1.2将是一串:1
0.2将是一个字符串:0
我花了一段时间在Google上寻找答案但是,作为Objective-C的菜鸟,我不知道该搜索什么!所以,我真的很感激指向正确的方向!
谢谢,阿什
感谢大家的指点,我设法提出了一个解决方案:
float roundedValue = round(2.0f * number) / 2.0f; NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setMaximumFractionDigits:1]; [formatter setRoundingMode: NSNumberFormatterRoundDown]; NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:roundedValue]]; [formatter release];
以上是我投入的测试用例,但如果有人知道更好的方法,我会有兴趣听到它!
float floatVal = 1.23456;
四舍五入
int roundedVal = lroundf(floatVal); NSLog(@"%d",roundedVal);
围捕
int roundedUpVal = ceil(floatVal); NSLog(@"%d",roundedUpVal);
四舍五入
int roundedDownVal = floor(floatVal); NSLog(@"%d",roundedDownVal);
NSString *numberString = [NSString stringWithFormat:@"%f", round(2.0f * number) / 2.0f];
使用lroundf()将float舍入为整数,然后将整数转换为字符串.
NSString *numberString = [NSString stringWithFormat:@"%d",lroundf(number)];
我建议使用NSNumberFormatter.
一个简单的方法:
float theFloat = 1.23456; int rounded = roundf(theFloat); NSLog(@"%d",rounded); int roundedUp = ceil(theFloat); NSLog(@"%d",roundedUp); int roundedDown = floor(theFloat); NSLog(@"%d",roundedDown); // Note: int can be replaced by float