use*_*941 3 language-agnostic rounding
我和这里的问题有同样的问题.
用户问:
我只是写了这个以返回最近的45度角.像0,45,90,135 ......
感觉必须有更好的方法来做到这一点.这工作正常,但看起来很乱.
public function nearestDeg(degs:int):int {
if (degs >= 0 && degs <= 45) {
if (degs <= 23) {
return 0;
}else {
return 45;
}
}
if (degs > 45 && degs <= 90) {
if (degs <= 68) {
return 45;
}else {
return 90;
}
}
if (degs > 90 && degs <= 135) {
if (degs <= 113) {
return 90;
}else {
return 135;
}
}
if (degs > 135 && degs <= 180) {
if (degs <= 158) {
return 135;
}else {
return 180;
}
}
if (degs > 180 && degs <= 225) {
if (degs <= 203) {
return 180;
}else {
return 225;
}
}
if (degs > 225 && degs <= 270) {
if (degs <= 248) {
return 225;
}else {
return 270;
}
}
if (degs > 270 && degs <= 315) {
if (degs <= 293) {
return 270;
}else {
return 315;
}
}
if (degs > 315 && degs <= 360) {
if (degs <= 338) {
return 315;
}else {
return 360;
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
将值舍入到最接近45度的最简洁方法是什么?
我将值除以45°,然后再向后乘以45°.伪代码:
deg = round(deg / 45) * 45;
Run Code Online (Sandbox Code Playgroud)
假设:/运算符返回浮点表示,不执行整数除法.如果特定的语言并不像对待这一点,应明确处理(例如,你可以通过划分45.0,而不是45).