无效 RoundOffTest(双数)
{
// 为了得到这个输出,你会将什么值传递给 RoundOffTest():
// BEFORE number=1.785000 round=178.000000(向下取整)
// 后数字=1.785000 舍入=179.000000(向上舍入)
//
// 它似乎向下舍入。
// 但是第二行似乎将它向上取整。
// 这不是不可能的吗?难道没有可能的数字你可以通过吗
// 这个函数,看到那个输出了吗?或者有吗?
NSLog(@"BEFORE number=%f round=%f (round down)", number, round(number * 100));
双倍数 = 1.785000;
NSLog(@"AFTER NUMBER=%f round=%f (round up)", NUMBER, round(NUMBER * 100));
}
1 回答
0
设置number为1.7849995,你会得到你看到的结果。请注意,%f它打印了 6 个小数位,并且输出被四舍五入到那个位数 - 所以1.7849994不起作用。
不四舍五入的格式化
要回答您的评论问题:使用NSNumberFormatter. 我认为所有的printf样式格式化程序都是圆形的。NSNumberFormatter提供7种不同的舍入模式。这是您的测试功能的修改版本:
void RoundOffTest(double number)
{
NSNumberFormatter *formatter = [NSNumberFormatter new];
[formatter setFormat:@"0.000000"]; // see docs for format strings
[formatter setRoundingMode:NSNumberFormatterRoundFloor]; // i.e. truncate
NSString *formatted = [formatter stringFromNumber:[NSNumber numberWithDouble:number]];
NSLog(@"%@\n", formatted);
[formatter release];
}
于 2011-04-16T04:38:13.033 回答