我的问题与问题here相同。
用户问:
我刚刚写了这个以返回最近的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;
}
将值舍入到最接近45度的最简洁方法是什么?
答案 0 :(得分:6)
我将值除以45°,然后再向后乘以45°。伪代码:
deg = round(deg / 45) * 45;
假设:/
运算符返回浮点表示,不执行整数除法。如果特定语言不对此进行处理,则应明确处理(例如,您可以除以45.0
而不是45
)。
答案 1 :(得分:0)
我知道 OP 要求学位,但弧度可能对其他人有帮助。
import numpy as np
round(radians/(np.pi/4))*np.pi/4