F# 学习笔记(整数和实数运算)

F#中,符号=,<>,<,>,<=和>=分别表示等于,不等于,小于,大于,小于等于和大于等于。

F#提供6个位运算符:~~~(取补),&&&(与),|||(或),^^^(异或),<<<(左移位),>>>(右移位)

常用数学函数:

极值函数  max,min    整数和实数

绝对值函数 abs          整数和实数

取整函数 ceil,floor,round   实数

指数函数 exp,**      实数

三角函数 sin,cos,tan,asin,acos,atan,sinh,cosh,tanh  实数

F#还提供一个截断函数,它总是截断小数部分truncate

对于大数运算F#提供了bigInt 与bignum

下面是一个列子,表达式求值:

[<EntryPoint>]
let main argv =
    let eva (s:string) =
        let ss = s.Trim().Split(‘ ‘)
        let x = ss.[0] |> System.Double.Parse
        let y = ss.[2] |> System.Double.Parse
        match ss.[1] with
        | "+" -> x + y
        | "-" -> x - y
        | "*" -> x * y
        | "/" -> x / y
        | "%" -> x % y
        | "**" -> x ** y
        | _ -> 0.0
    printfn "请输入表达式:"
    let s = System.Console.ReadLine()
    if s.Trim().Split(‘ ‘).Length < 2 then printfn "表达式格式不正确"
    else  s |> eva |> printfn "=%f"
    0 // 返回整数退出代码
时间: 2024-10-08 10:44:23

F# 学习笔记(整数和实数运算)的相关文章

F# 学习笔记(函数基础)

因为只是笔记,所以只记录自己觉得要注意与需要理解的地方,其他就不记了 函数定义上F#有自己的写法: [<EntryPoint>] let main argv = let f1 = fun x -> x * x - 2 * x let f2 x = let x1 = x - 2 x * x1 printfn "%i" (f2 10) printfn "%i" (f1 10) 0 f1是很好理解的,因为基本上现在支持lambda表达式的基本都是第一种写

F# 学习笔记(函数基础3)

递归函数: 在F#中一般不允许调用自身,而只能通过关键字rec来声明其为递归函数: 最大公约数的应用,使用辗转相除法: [<EntryPoint>] let main argv = let rec gcd(a,b) = if a = 1 then b elif b = 1 then a elif a = b then b else if a > b then gcd(a-b, b) else gcd(a,b-a) (72,54) |> gcd |> printfn "

F# 学习笔记(函数基础2模式匹配)

模式匹配表达式: [<EntryPoint>] let main argv = let eval x = match x with |5 -> "优" |4 -> "良" |3 -> "中" |_ -> "差" let y = eval 4 let s = Array.map eval [|3; 2; 1; 5|] 0 // 返回整数退出代码 在这里表达式中Array.map 函数,数组的每

F# 学习笔记(列表)

列表,F#里的列表也是递归结构,这种递归结构让语法更加的清晰和易懂 [<EntryPoint>] let main argv = let list1 = [1;3;5] list1 |> printfn "%A" let list2 = [2..2..10] list2 |> printfn "%A" let list3 = [for i in 1..4 -> i*i*i] list3 |> printfn "%A&qu

F# 学习笔记(流程控制)

流程控制关键字 if: let mutable x = 17*17 - 15*15 if x % 2 = 1 then x <- x - 1 while: [<EntryPoint>] let main argv = let nr_fib n = let mutable a,b,i = 1I,1I,1 while i < n do let t = b b <- a+b a <- t i <- i+1 a (nr_fib 10).ToString() |> p

shell脚本编程学习笔记-整数二次元比较操作符

1.1 下表为常用二次元比较操作符 我们也可以通过man test查看 提示 (1) "<"符号是小于的意思,if[[ "$a"<"$b" ]], if[[ "$a"\<"$b" ]].在单括号中需要转义,因为在shell也用<和>做重定向. (2) ">"符号是大于的意思,if[[ "$a"> "$b"

《深入Java虚拟机学习笔记》- 第12章 整数运算

Java虚拟机提供几种进行整数算术运算的操作码,他们执行基于int和long类型的运算.当byte.short和char类型值参与算术运算时,首先会将它们转换为int类型.这些操作码都不会抛出异常,溢出在这里通常可以被忽略. 整数加法 操作码 操作数 说明 iadd (无) 从栈中弹出两个int类型数,相加,然后将所得int类型结果压回栈 ladd (无) 从栈中弹出两个long类型数,相加,然后将所得long类型结果压回栈 将一个常量与局部变量相加 操作码 操作数 说明 iinc vindex

Android学习笔记----Error:Execution failed for task &#39;:app:validateDebugSigning&#39;. &gt; Keystore file F:\myAndroid3\android_s

导入下载的工程出现这个错误,追究其原因是是下载的工程中有指定使用的Keystore文件的路径, 所以我们可以通过Android studio File->ProjectStructure->选择app ,再选择signing 把Store File里指定的Keystore文件的路径删除,或者填写自己的Keystore文件的路径 然后点击ok,再clean下工程即可 Android学习笔记----Error:Execution failed for task ':app:validateDebu

我的学习笔记

刚刚结束了javaSE语言的学习,进入安卓初级阶段,不会像之前那么痛苦了!在这里整理了一些之前学习的笔记,对之前所学的知识进行一个过滤吧!语言表达不是很正确,大家多指正 关于标示符: 1.[a-z] .[A-Z].[0-9].[$ || _ ],不能以数字开头,区分大小写 关于进制 1.八进制:以0开头,十六进制:以0X开头 八大基本类型 1.byte  short int long char float long boolean 2.在运算中,byte short char 会默认转换成int