r - 有没有办法测试一个数字是弧度还是度数?
r - Is there a way to test if a number is either a radian or degree?
我正在为我的 R 包添加测试 iemisc
。以前,我创建的函数使用度数而不是弧度来表示三角函数。
有没有一种方法可以确定给定的数字是弧度还是度数?
如果是这样,那么我想将该方法纳入我的测试中。
例如,根据 John Mount 最近撰写的 Win-Vector 博客文章 http://www.win-vector.com/blog/2019/03/unit-tests-in-r/ 和 RUnit
小插图,我为 cosd 编写了以下测试:
test_cosd <- function() {
library("iemisc")
RUnit::checkEquals(cosd(360), 1)
RUnit::checkEquals(cosd(90), 0)
RUnit::checkEquals(cosd(0), 1)
RUnit::checkException(cosd(pi * 3 / 4))
RUnit::checkException(cosd("sq"))
invisible(NULL)
}
但是,我希望 checkException 用于弧度测量而不是度数测量的数字。
谢谢。
可以利用度量之间的量级差异来合理推断输入是度数还是弧度。以度为单位的测量值大约是相同的弧度测量值的 60 倍。从底层关系可以看出:
180 degrees = pi (3.14159) radians
如果您可以安全地假设用户只会在角度小于整圆的情况下使用该工具(在许多物理产品工程应用中并非不合理,除非涉及开瓶器螺旋线,否则有一个简单的启发式方法是可能的)。在这种情况下,假设值大于 2*pi 或 6.28 代表度数是安全的。
否则,值本身是无法区分的。
我正在为我的 R 包添加测试 iemisc
。以前,我创建的函数使用度数而不是弧度来表示三角函数。
有没有一种方法可以确定给定的数字是弧度还是度数?
如果是这样,那么我想将该方法纳入我的测试中。
例如,根据 John Mount 最近撰写的 Win-Vector 博客文章 http://www.win-vector.com/blog/2019/03/unit-tests-in-r/ 和 RUnit
小插图,我为 cosd 编写了以下测试:
test_cosd <- function() {
library("iemisc")
RUnit::checkEquals(cosd(360), 1)
RUnit::checkEquals(cosd(90), 0)
RUnit::checkEquals(cosd(0), 1)
RUnit::checkException(cosd(pi * 3 / 4))
RUnit::checkException(cosd("sq"))
invisible(NULL)
}
但是,我希望 checkException 用于弧度测量而不是度数测量的数字。
谢谢。
可以利用度量之间的量级差异来合理推断输入是度数还是弧度。以度为单位的测量值大约是相同的弧度测量值的 60 倍。从底层关系可以看出:
180 degrees = pi (3.14159) radians
如果您可以安全地假设用户只会在角度小于整圆的情况下使用该工具(在许多物理产品工程应用中并非不合理,除非涉及开瓶器螺旋线,否则有一个简单的启发式方法是可能的)。在这种情况下,假设值大于 2*pi 或 6.28 代表度数是安全的。
否则,值本身是无法区分的。