将值四舍五入到最接近的 45 度的最简洁方法是什么?
What is the cleanest way to round a value to nearest 45 degrees?
我和问题here有同样的问题。
用户提问:
I just wrote this to return the nearest 45 degree angle. Like 0, 45, 90, 135...
It feels like there must be a better way of doing this though. This is working fine but it looks messy.
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 度的最简洁方法是什么?
我将该值除以 45°,四舍五入,然后再乘以 45°。伪代码:
deg = round(deg / 45) * 45;
假设:/
运算符 returns 是浮点表示,不执行整数除法。如果特定语言不这样对待它,则应明确处理(例如,您可以除以 45.0
而不是 45
)。
我知道 OP 要求度数,但弧度可能对其他人有帮助。
import numpy as np
round(radians/(np.pi/4))*np.pi/4
我和问题here有同样的问题。
用户提问:
I just wrote this to return the nearest 45 degree angle. Like 0, 45, 90, 135...
It feels like there must be a better way of doing this though. This is working fine but it looks messy.
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 度的最简洁方法是什么?
我将该值除以 45°,四舍五入,然后再乘以 45°。伪代码:
deg = round(deg / 45) * 45;
假设:/
运算符 returns 是浮点表示,不执行整数除法。如果特定语言不这样对待它,则应明确处理(例如,您可以除以 45.0
而不是 45
)。
我知道 OP 要求度数,但弧度可能对其他人有帮助。
import numpy as np
round(radians/(np.pi/4))*np.pi/4