ShoneSharp语言(S#)的设计和使用介绍
系列(5)— 数值Double
作者:Shone
声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp。
摘要: S#语言的最基本类型——数值(对应C#的Double),可用于表示整数或实数值,如10、25.32等。S#只有一种数值类型,可避免类型转换和运算陷阱。本文详细列出数值类型专用的常量、函数、属性以及方法,包括语法格式、成员说明、输入示例以及求值结果。
软件: S#语言编辑解析运行器(ShoneSharp.13.6.exe),运行环境.NET4.0,单EXE直接运行,绿色软件无副作用。网盘链接https://pan.baidu.com/s/1nv1hmJn
今天详细解释一下S#语言的最基本类型——数值(对应C#的双精度浮点数类型double),可用于表示整数或实数值,如10、25.32等。
注意C#中还有int, float, byte, short, long等多种数值类型,为什么S#只有一种数值类型?
S#这样设计就是为了简化常规数据输入,避免进行类型转换,同时也避免部分符号的运算陷阱。比如:在C#中5/2等于2,而5/2.0则等于2.5,这对于用户大量输入数据公式时很容易犯下错误,而且不容易察觉。因此S#这样设计可以确保5/2等于2.5。
S#语言为数值类型专门提供了大量的常量、函数、属性以及方法,具体语法格式、成员说明、输入示例以及求值结果都在下面详细列出,可供参考。
其实还有些适用于数值类型的算符、函数、属性以及方法,如10+20、cos(30)、5.2.ToStr等,没有在本节列出而是放在其基类型——任意对象(对应C#的object)中介绍,因为这些符号功能更加强大,不但支持数值,还支持数组、列表和数据表的计算。比如[10,15]+20、cos({30,40,50})、{5.2,[1,2],6}.ToStr。
(1) 常量
Double BaseE
说明:自然对数底e
输入:BaseE
求值:2.7182818284590451
Double DecFactor
说明:角度系数
输入:DecFactor
求值:57.295779513082323
Double DoubleE
说明:2e
输入:DoubleE
求值:5.43656365691809
Double DoubleEpsilon
说明:2ε
输入:DoubleEpsilon
求值:2E-06
Double DoublePI
说明:2π
输入:DoublePI
求值:6.2831853071795862
Double Epsilon
说明:误差因子ε
输入:Epsilon
求值:1E-06
Double HalfE
说明:e/2
输入:HalfE
求值:1.3591409142295225
Double HalfEpsilon
说明:ε/2
输入:HalfEpsilon
求值:5E-07
Double HalfND
说明:-0.5的标准正态分布概率值
输入:HalfND
求值:0.3085
Double HalfPI
说明:π/2
输入:HalfPI
求值:1.5707963267948966
Double MaxValue
说明:最大数值 1.7976931348623157E+308
输入:MaxValue
求值:1.7976931348623157E+308
Double MinValue
说明:最小数值 -1.7976931348623157E+308
输入:MinValue
求值:-1.7976931348623157E+308
Double NaN
说明:非数字0/0、∞/∞、sqrt(负数)、ln(负数)等
输入:NaN
Double NEpsilon
说明:-ε
输入:NEpsilon
求值:-1E-06
Double NInfinity
说明:负无穷大-∞
输入:NInfinity
求值:-∞
Double OneEpsilon
说明:1+ε
输入:OneEpsilon
求值:1.000001
Double OneHalfND
说明:-1.5的标准正态分布概率值
输入:OneHalfND
求值:0.0668
Double OneND
说明:-1的标准正态分布概率值
输入:OneND
求值:0.1587
Double OneNEpsilon
说明:1-ε
输入:OneNEpsilon
求值:0.999999
Double OneSigma
说明:1σ区间概率累计值
输入:OneSigma
求值:0.6826
Double PI
说明:圆周率π
输入:PI
求值:3.1415926535897931
Double PInfinity
说明:正无穷大∞
输入:PInfinity
求值:∞
Double Precision
说明:小数点精度位数
输入:Precision
求值:6
Double RadFactor
说明:弧度系数
输入:RadFactor
求值:0.017453292519943295
Double SqrdE
说明:e平方
输入:SqrdE
求值:7.3890560989306495
Double SqrdEpsilon
说明:ε平方
输入:SqrdEpsilon
求值:1E-12
Double SqrdPI
说明:π平方
输入:SqrdPI
求值:9.869604401089358
Double SqrtE
说明:e平方根
输入:SqrtE
求值:1.6487212707001282
Double SqrtEpsilon
说明:ε平方根
输入:SqrtEpsilon
求值:0.001
Double SqrtPI
说明:π平方根
输入:SqrtPI
求值:1.7724538509055159
Double ThreeHD
说明:-3的标准正态分布概率值
输入:ThreeHD
求值:0.0013
Double ThreeSigma
说明:3σ区间概率累计值
输入:ThreeSigma
求值:0.9974
Double TwoHalfND
说明:-2.5的标准正态分布概率值
输入:TwoHalfND
求值:0.0062
Double TwoND
说明:-2的标准正态分布概率值
输入:TwoND
求值:0.0228
Double TwoSigma
说明:2σ区间概率累计值
输入:TwoSigma
求值:0.9544
(2) 函数
Double ang(Double x, Double y)
说明:求点坐标(x,y)逆时针方向角度值
输入:ang(10,10)
求值:45
Double area(Double a, Double b, Double c)
说明:求边长为a,b,c三角形的面积
输入:area(10,10,10)
求值:43.301270189221931
Double avd(Double m, Double L, Double d)
说明:求长度L间距d的等分距,m为等距模式:-1最小间距,0近似间距,1最大间距
输入:avd(0,100,30)
求值:33.333333333333336
Double avn(Double m, Double L, Double d)
说明:求长度L间距d的等分数,m为等距模式:-1最小间距,0近似间距,1最大间距
输入:avn(0,100,30)
求值:3
Double cmb(Double n, Double r)
说明:求(n,r)组合值
输入:cmb(10,2)
求值:45
Double dist(Double x1, Double y1, Double x2, Double y2)
说明:求点(x1,y1)到点(x2,y2)的距离平方
输入:dist(0,0,10,10)
求值:14.142135623730951
Double distsqrd(Double x1, Double y1, Double x2, Double y2)
说明:求点(x1,y1)到点(x2,y2)的距离平方
输入:distsqrd(0,0,10,10)
求值:200
Double dx(Double r, Double a)
说明:求极坐标(r,a)在X轴投影值
输入:dx(100,30)
求值:86.602540378443877
Double dy(Double r, Double a)
说明:求极坐标(r,a)在Y轴投影值
输入:dy(100,30)
求值:50
Double gauss(Double x)
说明:高斯标准正态分布函数
输入:gauss(0.5)
求值:0.35206532676429952
Double gauss(Double x, Double u, Double e)
说明:高斯正态分布函数
输入:gauss(0.5,0,1)
求值:0.35206532676429952
Double gcd(Double a, Double b)
说明:计算两个整数的最大公约数
输入:gcd(20,12)
求值:4
Double lcm(Double a, Double b)
说明:计算两个整数的最小公倍数
输入:lcm(20,12)
求值:60
Double max(Double val1, Double val2)
说明:求最大值
输入:max(1,10)
求值:10
Double mid(Double d1, Double d2)
说明:求[d1,d2]区间的中值
输入:mid(0,10)
求值:5
Double min(Double val1, Double val2)
说明:求最小值
输入:min(1,10)
求值:1
Double norm(Double a)
说明:求[0,360]区间规格化角度值
输入:norm(390)
求值:30
Double pbl2(Double x)
说明:二次过渡函数(抛物线)
输入:pbl2(0.5)
求值:0.25
Double pbl3(Double x)
说明:三次过渡函数(抛物线)
输入:pbl3(0.5)
求值:0.5
Double pbl4(Double x)
说明:四次过渡函数(抛物线)
输入:pbl4(0.5)
求值:0.3125
Double pbla(Double x)
说明:圆弧过渡函数
输入:pbla(0.5)
求值:0.2632316107465042
Double pblaa(Double x)
说明:双圆弧过渡函数
输入:pblaa(0.5)
求值:0.5
Double pbls(Double x)
说明:正弦线过渡函数
输入:pbls(0.5)
求值:0.29289321881345254
Double pblss(Double x)
说明:双正弦线过渡函数
输入:pblss(0.5)
求值:0.5
Double pmt(Double n)
说明:求排列值
输入:pmt(10)
求值:3628800
Double pmt(Double n, Double r)
说明:求(n,r)排列值
输入:pmt(10,2)
求值:90
Double rang(Double x, Double y)
说明:求点坐标(x,y)逆时针方向弧度值
输入:rang(10,10)
求值:0.78539816339744828
Double rnorm(Double a)
说明:求[0,2π]区间规格化弧度值
输入:rnorm(10)
求值:3.7168146928204138
Double root(func(…) fx, Double a, Double b)
说明:用二分法求[a,b]区间指定函数的根,注意必须单调函数且必有根
输入:root(x=>2*x-1,-1,1)
求值:0.5
Double[] roots(func(…) fx, Double a, Double b)
说明:返回指定区间[a,b]内指定函数的根数组(最多5个)
输入:roots(x=>x*x-0.5,-1,1)
求值:[-0.70710678100585933, 0.70710678100585933]
Double spl(Double L, Double d, Double w)
说明:求长度L间距d等宽的螺旋钢筋总长
输入:spl(50,5,30)
求值:945.74462665601391
Double spl(Double L, Double d, Double w1, Double w2)
说明:求长度L间距d变宽w1~w2的螺旋钢筋总长
输入:spl(50,5,15,30)
求值:525.51295716469406
(3) 属性
Bool Double.ApproxZero
说明:判断数值是否近似于0(误差ε)
输入:x.ApproxZero
String Double.CharStr
说明:转换为单个字符串,如"A"
输入:x.CharStr
Bool Double.EqualZero
说明:判断数值是否约等于0(误差ε平方)
输入:x.EqualZero
Double Double.Factor
说明:获取数值整数部分的分解因子
输入:x.Factor
Double[] Double.Factors
说明:获取数值整数部分的分解因子数组
输入:x.Factors
Bool Double.IsEven
说明:判断数值整数部分是否为偶数
输入:x.IsEven
Bool Double.IsInvalid
说明:判断数值是否无效(无穷大或非数字)
输入:x.IsInvalid
Bool Double.IsOdd
说明:判断数值整数部分是否为奇数
输入:x.IsOdd
Bool Double.IsPrime
说明:判断数值整数部分是否为质素
输入:x.IsPrime
Bool Double.IsValid
说明:判断数值是否有效
输入:x.IsValid
String Double.LevelStr
说明:转换为3位小数点标高串,如4.250
输入:x.LevelStr
Bool Double.NearZero
说明:判断数值是否靠近于0(误差ε平方根)
输入:x.NearZero
Double Double.Odd
说明:返回整数部分0/1
输入:x.Odd
String Double.ScaleStr
说明:转换为比例格式标高串,如1:4
输入:x.ScaleStr
(4) 方法
Bool Double.Approxes(Double d2)
说明:判断数值是否近似(误差ε)
输入:x.Approxes(10)
Bool Double.Betweens(Double a, Double b)
说明:判断数值是否∈[a,b]
输入:x.Betweens(0,10)
Bool Double.Betweins(Double a, Double b)
说明:判断数值是否∈[a,b)
输入:x.Betweins(0,10)
Bool Double.Betwiens(Double a, Double b)
说明:判断数值是否∈(a,b]
输入:x.Betwiens(0,10)
Bool Double.Betwiins(Double a, Double b)
说明:判断数值是否∈(a,b)
输入:x.Betwiins(0,10)
Bool Double.Equals(Double d2)
说明:判断数值是否约等(误差ε平方)
输入:x.Equals(10)
Double Double.Interplate(Double d2, Double t)
说明:计算线性插值
输入:x.Interplate(10,0.5)
Double Double.Interplate(Double d2, ILambada func, Double t)
说明:计算自定义函数插值
输入:x.Interplate(10,x=>2*x*x-x,0.5)
Double Double.Interplate(Double d2, Object mode, Double t)
说明:按模式进行插值(mode=0/1线性,=10/11三次抛物线,=20/21四次抛物线,=30/31二次抛物线,=40/41圆弧,=50/51双圆弧,=60/61正弦线,=70/71双正弦线,=80/81常量线)
输入:x.Interplate(10,0,0.5)
Bool Double.Nears(Double d2)
说明:判断数值是否靠近(误差ε平方根)
输入:x.Nears(10)
Bool Double.Nears(Double d2, Double nearness)
说明:判断数值是否靠近(指定误差)
输入:x.Nears(10,0.001)
String Double.ToShortStr(Double delta)
说明:转换为短字符串,保持指定精度
输入:x.ToShortStr(0.001)
String Double.ToStr(String format)
说明:转换为指定格式字符串
输入:x.ToStr('f1')
声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp。
软件: S#语言编辑解析运行器(ShoneSharp.13.6.exe),运行环境.NET4.0,单EXE直接运行,绿色软件无副作用。网盘链接https://pan.baidu.com/s/1nv1hmJn