iOS围绕浮动

时间:2011-07-13 11:16:30

标签: objective-c ios floating-point rounding

我有一个具有更多十进制数字的浮点数,例如:

float fRes = 10.0 / 3.0;

实际上fRes值是3.3333333333333 它可以设置为例如2个十进制数字:

float fRes = 10.0 / 3.0;
// fRes is 3.333333333333333333333333
float fResOk = FuncRound( fRes, 2 );
// fResOk is 3.33

提前致谢

2 个答案:

答案 0 :(得分:58)

我不知道你在哪里使用这个四舍五入的数字,但是你应该只在将值显示给用户时舍入你的值,有基于C的格式字符串方法来舍入浮点数例如

[NSString stringWithFormat:@"%.2f", value];

正如您可能已经读过的那样,浮点数是实数的近似值,因此执行fResOk = roundf( fRes*100.0)/100.0;可能不会给出3.33但是数字与浮点数到3.33时的数字一样接近。

答案 1 :(得分:28)

假设您正在寻找正确的函数来舍入到一定数量的数字,您可能会发现最简单的方法是执行以下操作:

fResOk = roundf( fRes*100.0)/100.0;

这会将值乘以100(给出2位有效数字),对值进行四舍五入,然后将其缩小回原来开始的幅度。