• ShoneSharp语言(S#)的设计和使用介绍系列(5)— 数值Double


    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

  • 相关阅读:
    nyoj592 spiral grid
    ny788 又见Alice and Bob
    hdoj 1166 敌兵布阵 线段数和树状数组
    nyoj228 士兵杀敌(5)插线问线
    nyoj576 集齐卡片赢大奖(一)
    ny269 VF
    AC Again hdoj 1582 搜索
    nyoj123 士兵杀敌(四)树状数组 插线问点
    CRAVAT: Cancer-Related Analysis of VAriants Toolkit
    第二代无创胎儿基因组分析结果
  • 原文地址:https://www.cnblogs.com/ShoneSharp/p/ShoneSharp-5.html
Copyright © 2020-2023  润新知