在objective-c中舍入浮点数

nfa*_*chi 8 floating-point objective-c rounding

我想知道是否有一个简单的函数,我可以使用这样的样本.我有一个

float value = 1.12345;
Run Code Online (Sandbox Code Playgroud)

我想通过调用类似的东西来围绕它

float value2 = [roundFloat value:value decimal:3];
NSLog(@"value2 = %f", value2);
Run Code Online (Sandbox Code Playgroud)

我得到"1.123"是否有任何Library或默认功能,或者我应该为这种类型的计算编写代码块?

感谢您的帮助

Ann*_*nne 7

使用NSLog(@"%f", theFloat)始终输出六位小数,例如:

float theFloat = 1;
NSLog(@"%f",theFloat);
Run Code Online (Sandbox Code Playgroud)

输出:

1.000000
Run Code Online (Sandbox Code Playgroud)

换句话说,你将无法1.123使用NSLog(@"%f", theFloat).

三位小数后截止:

float theFloat = 1.23456;
float newFLoat = (int)(theFloat * 1000.0) / 1000.0;
NSLog(@"%f",newFLoat);
Run Code Online (Sandbox Code Playgroud)

输出:

1.234000
Run Code Online (Sandbox Code Playgroud)

舍入到三位小数(使用roundf()/ lroundf()/ ceil()/ floor()):

float theFloat = 1.23456;
float newFLoat = (int)(roundf(theFloat * 1000.0)) / 1000.0;
NSLog(@"%f",newFLoat);
Run Code Online (Sandbox Code Playgroud)

输出:

1.235000
Run Code Online (Sandbox Code Playgroud)

舍入到三位小数(脏路):

float theFloat = 1.23456;
NSString *theString = [NSString stringWithFormat:@"%.3f", theFloat];
float newFloat = [theString floatValue];
NSLog(@"%@",theString);
NSLog(@"%f",newFloat);
Run Code Online (Sandbox Code Playgroud)

输出:

1.235
1.235000
Run Code Online (Sandbox Code Playgroud)