Julia 提供了一套高效、可移植的标准数学函数。
下表列出了用于数值比较的函数:
| 函数 | 测试是否满足如下性质 |
|---|---|
isequal(x, y) |
x 与 y 值与类型是否完全相同 |
isfinite(x) |
x 是否是有限大的数字 |
isinf(x) |
x 是否是(正/负)无穷大 |
isnan(x) |
x 是否是 NaN |
isequal 认为 NaN 之间是相等的:
isequal 也能用来区分带符号的零:
其他函数实例:
下表列出了 Julia 支持的舍入函数:
| 函数 | 描述 | 返回类型 |
|---|---|---|
round(x) |
x 舍到最接近的整数 |
typeof(x) |
round(T, x) |
x 舍到最接近的整数 |
T |
floor(x) |
x 向 -Inf 舍入 |
typeof(x) |
floor(T, x) |
x 向 -Inf 舍入 |
T |
ceil(x) |
x 向 +Inf 方向取整 |
typeof(x) |
ceil(T, x) |
x 向 +Inf 方向取整 |
T |
trunc(x) |
x 向 0 取整 |
typeof(x) |
trunc(T, x) |
x 向 0 取整 |
T |
下表列出了 Julia 支持的除法函数:
| 函数 | 描述 |
|---|---|
div(x,y), x÷y |
截断除法,无论任何类型相除的结果都会省略小数部分,剩下整数部分,商向零近似。 |
fld(x,y) |
向下取整除法;商向 -Inf 近似 |
cld(x,y) |
向上取整除法;商向 +Inf 近似 |
rem(x,y) |
取余;满足 x == div(x,y)*y + rem(x,y);符号与 x 一致 |
mod(x,y) |
取模;满足 x == fld(x,y)*y + mod(x,y);符号与 y 一致 |
mod1(x,y) |
偏移 1 的 mod;若 y>0,则返回 r∈(0,y],若 y<0,则 r∈[y,0) 且满足 mod(r, y) == mod(x, y) |
mod2pi(x) |
对 2pi 取模;0 <= mod2pi(x) < 2pi |
divrem(x,y) |
返回 (div(x,y),rem(x,y)) |
fldmod(x,y) |
返回 (fld(x,y),mod(x,y)) |
gcd(x,y...) |
x, y,... 的最大公约数 |
lcm(x,y...) |
x, y,... 的最小公倍数 |
下表列出了 Julia 支持的符号和绝对值函数:
| 函数 | 描述 |
|---|---|
abs(x) |
x 的模 |
abs2(x) |
x 的模的平方 |
sign(x) |
表示 x 的符号,返回 -1,0,或 +1 |
signbit(x) |
表示符号位是 true 或 false |
copysign(x,y) |
返回一个数,其值等于 x 的模,符号与 y 一致 |
flipsign(x,y) |
返回一个数,其值等于 x 的模,符号与 x*y 一致 |
下表列出了 Julia 支持的符号和绝对值函数:
| 函数 | 描述 |
|---|---|
sqrt(x), √x |
x 的平方根 |
cbrt(x), ∛x |
x 的立方根 |
hypot(x,y) |
当直角边的长度为 x 和 y时,直角三角形斜边的长度 |
exp(x) |
自然指数函数在 x 处的值 |
expm1(x) |
当 x 接近 0 时的 exp(x)-1 的精确值 |
ldexp(x,n) |
x*2^n 的高效算法,n 为整数 |
log(x) |
x 的自然对数 |
log(b,x) |
以 b 为底 x 的对数 |
log2(x) |
以 2 为底 x 的对数 |
log10(x) |
以 10 为底 x 的对数 |
log1p(x) |
当 x接近 0 时的 log(1+x) 的精确值 |
exponent(x) |
x 的二进制指数 |
significand(x) |
浮点数 x 的二进制有效数(也就是尾数) |
Julia 也提供了所有标准的三角和双曲函数:
sin cos tan cot sec csc sinh cosh tanh coth sech csch asin acos atan acot asec acsc asinh acosh atanh acoth asech acsch sinc cosc
下图中以弧度为单位的角度对应于单位圆上的一个点,其坐标定义了角度的正弦和余弦。

以上提供的函数都是单参数函数,不过 atan 也可以接收两个参数 来表示传统的 atan2 函数。
atan(y) atan(y, x)
分别计算 y 或 y/x 的反正切。
另外,sinpi(x) 和 cospi(x) 分别用来对 sin(pi*x) 和 cos(pi*x) 进行更精确的计算。
要计算角度而非弧度的三角函数,以 d 做后缀。 比如,sind(x) 计算 x 的 sine 值,其中 x 是一个角度值。 下面是角度变量的三角函数完整列表:
sind cosd tand cotd secd cscd asind acosd atand acotd asecd acscd
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我正在尝试用ruby中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
如何在Ruby中按名称传递函数?(我使用Ruby才几个小时,所以我还在想办法。)nums=[1,2,3,4]#Thisworks,butismoreverbosethanI'dlikenums.eachdo|i|putsiend#InJS,Icouldjustdosomethinglike:#nums.forEach(console.log)#InF#,itwouldbesomethinglike:#List.iternums(printf"%A")#InRuby,IwishIcoulddosomethinglike:nums.eachputs在Ruby中能不能做到类似的简洁?我可以只
说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时
我需要一个通过输入字符串进行计算的方法,像这样function="(a/b)*100"a=25b=50function.something>>50有什么方法吗? 最佳答案 您可以使用instance_eval:function="(a/b)*100"a=25.0b=50instance_evalfunction#=>50.0请注意,使用eval本质上是不安全的,尤其是当您使用外部输入时,因为它可能包含注入(inject)的恶意代码。另请注意,a设置为25.0而不是25,因为如果它是整数a/b将导致0(整数)。
我需要从json记录中获取一些值并像下面这样提取curr_json_doc['title']['genre'].map{|s|s['name']}.join(',')但对于某些记录,curr_json_doc['title']['genre']可以为空。所以我想对map和join()使用try函数。我试过如下curr_json_doc['title']['genre'].try(:map,{|s|s['name']}).try(:join,(','))但是没用。 最佳答案 你没有正确传递block。block被传递给参数括号外的方法
在这段Ruby代码中:ModuleMClassC当我尝试运行时出现“'M:Module'的未定义方法'helper'”错误c=M::C.new("world")c.work但直接从另一个类调用M::helper("world")工作正常。类不能调用在定义它们的同一模块中定义的模块函数吗?除了将类移出模块外,还有其他解决方法吗? 最佳答案 为了调用M::helper,你需要将它定义为defself.helper;结束为了进行比较,请查看以下修改后的代码段中的helper和helper2moduleMclassC
也许这听起来很荒谬,但我想知道这对Ruby是否可行?基本上我有一个功能...defadda,bc=a+breturncend我希望能够将“+”或其他运算符(例如“-”)传递给函数,这样它就类似于...defsuma,b,operatorc=aoperatorbreturncend这可能吗? 最佳答案 两种可能性:以方法/算子名作为符号:defsuma,b,operatora.send(operator,b)endsum42,23,:+或者更通用的解决方案:采取一个block:defsuma,byielda,bendsum42,23,
所以我正在研究RubyKoans,而且我遇到了一个我认为是ruby1.9.x特有的问题。deftest_calling_global_methods_without_parenthesesresult=my_global_method2,3assert_equal5,resultend我明白了:james@tristan:~/code/ruby_projects/ruby_koans$rake(in/home/james/code/ruby_projects/ruby_koans)cdkoans/home/james/.rvm/rubies/ruby-1.9.2-p180/bin/ru