我想将以下浮点数四舍五入到最接近的0.05。
449.263824 --> 449.25
390.928070 --> 390.90
390.878082 --> 390.85
如何实现这个目标?
我想将以下浮点数四舍五入到最接近的0.05。
449.263824 --> 449.25
390.928070 --> 390.90
390.878082 --> 390.85
如何实现这个目标?
为了匹配你问题中的输出,你可以进行以下操作:
float customRounding(float value) {
const float roundingValue = 0.05;
int mulitpler = floor(value / roundingValue);
return mulitpler * roundingValue;
}
示例:
NSLog(@"Output: %f --> %.2f", 449.263824, customRounding(449.263824));
这里有一个round()函数。我认为你需要这样做:
double rounded = round(number * 20.0) / 20.0;
round(390.928070 * 20.0) / 20.0 = 390.95
时,你如何将其标记为正确答案?在你的问题中,你希望输出为 390.90。 - Black Frog我知道这个问题已经有答案了,但是我使用了以下代码:
float unrounded = 2.234;
float decimal = 0.05;
float decimal2 = 1/decimal;
float rounded = (((int)((unrounded*decimal2)+0.5))/decimal2);
例如:
> unrounded = 2.234
> decimal = 0.05
> decimal2 = 1/0.05 = 20
>
> rounded:
> 2.234 * 20 = 44.68
> 44.68 + 0.5 = 45.18
> make an integer: 45
> 45 / 20 = 2.25
roundedValue = originalValue + x * 0.5;
roundedValue -= fmodf(roundedValue, x);
就目前而言,你想要什么并不是完全清楚的。
Use floor
:
#include <math.h>
...
double result = floor(number * 20.0) / 20.0;
你可以使用NSNumberFormatter进行四舍五入,通过其中一个NSNumberFormatterRoundingMode
选项来指定所需的舍入方式。(在上述类参考中搜索“NSNumberFormatterRoundingMode”以查看默认值。)
然而,正如@Jesse在您的问题评论中提到的那样,您提供的示例似乎没有任何标准的舍入方法。