iDe*_*Dev 0 iphone xcode objective-c nsnumber ios
我正在开发一个应用程序,并想要舍入值,即如果输出是4.8我想显示4.8而如果输出是4.0,我想显示4
此外,如果我可以精确舍入值,那将是很好的:如果值是4.34然后舍入到4.3而如果它是4.37然后将其舍入到4.4
舍入浮点值的一种方法是仅添加0.5然后截断该值.
double valueToRound = GetTheValueFromSomewhere();
double roundedValue = (double)((int)(valueToRound + 0.5));
Run Code Online (Sandbox Code Playgroud)
例如,这将从1.4到1.0和1.5再到2.0.要像你提到的那样舍入到其他小数位,只需将初始值乘以10或100等,使用相同类型的代码,然后将结果除以相同的数字,您将得到相同的结果,无论小数你想要的地方.
这是一个以任意精度进行舍入的示例.
double valueToRound = GetTheValueFromSomewhere();
int decimalPrecisionAtWhichToRound = 0;
double scale = 10^decimalPrecisionAtWhichToRound;
double tmp = valueToRound * scale;
tmp = (double)((int)(tmp + 0.5));
double roundedValue = tmp / scale;
Run Code Online (Sandbox Code Playgroud)
因此,如果decimalPrecisionAtWhichToRound设置为0,如上所述,它将舍入到最接近的整数.1.4将舍入到1.0.1.5将圆到2.0.
如果将decimalPrecisionAtWhichToRound设置为1,它将舍入到最接近的十分之一.1.45将转为1.5,而1.43将转为1.4.