目前,我使用以下方法计算比例因子:
CGFloat scale = CGContextGetCTM(context).a;
NSLog(@"SCALE : %f", scale);
我收到浮点值:0.124979,0.249958,0.499917。如何使用roundf将其转换为0.125,0.250,0.500。
答案 0 :(得分:9)
试试这个........
NSLog(@"SCALE : %.3f", scale);
NSString *value = [NSString stringWithFormat:@"%.3f", theFloat];
被盗
答案 1 :(得分:7)
听起来你想要一个圆形数字,它仍然是一个浮点数,但只有3位小数而不只是用于显示目的?那是你在问什么? IEEE浮点数是一个真正的痛苦。您可以指定foo = 1.5然后最终得到1.499999999,然后如果你说if ( foo == 1.5 )
它就会失败。对我来说,这似乎是一个错误,但有很长的描述为什么这在网上是“正确的”。对我来说,似乎象牙塔正确,对现实世界毫无用处。
所以,有些可能性。我想知道是否乘以1000然后四舍五入到整数值然后除以1000将起作用...当然相同的IEEE浮动bug,抱歉 spec 可能仍会咬你...值得一个尝试。
让自己好奇并写了一个快速测试:
CGFloat foo = 0.124979;
NSLog(@"foo is: %f", foo );
NSInteger ifoo = ceil(foo * 1000.0);
foo = ifoo / 1000.0;
NSLog( @"ifoo is: %d, and back to foo is: %f", ifoo, foo );
输出(无论如何在模拟器中):
test[5127:207] foo is: 0.124979
test[5127:207] ifoo is: 125, and back to foo is: 0.125000
这样可以做你想做的事。
运气。
答案 2 :(得分:0)
看看这个stackoverflow链接,它有两个很好的选项,可以将它舍入并将其转换为字符串或使用NSNumberFormatter将其舍入。
希望这能帮到你!