【F#2.0系列】使用F#进行算术操作

使用F#进行算术操作

基本类型:

类型 描述 示例 .NET 类型
bool True/false values true,false System.Boolean
byte 8-bit unsigned integers 0uy,19uy,0xFFuy System.Byte
sbyte 8-bit signed integers 0y, 19y,0xFFy System.SByte
int16 16-bit signed integers 0s, 19s,0x0800s System.Int16
uint16 16-bit unsigned integers 0us,19us,0x0800us System.UInt16
int, int32 32-bit signed integers 0, 19,0x0800,0b0001 System.Int32
uint32 32-bit unsigned integers 0u, 19u,0x0800u System.UInt32
int64 64-bit signed integers 0L, 19L,0x0800L System.Int64
uint64 64-bit unsigned integers 0UL,19UL,0x0800UL System.UInt64
nativeint Machine-sized signed integers 0n, 19n,0x0800n System.IntPtr
unativeint Machine-sized unsigned integers 0un,19un,0x0800un System.UIntPtr
single,float32 32-bit IEEE floating-point 0.0f,19.7f,1.3e4f System.Single
double,float 64-bit IEEE floating-point 0.0,19.7,1.3e4 System.Double
decimal High-precision decimal values 0M, 19M,19.03M System.Decimal
bigint Arbitrarily large integers 0I, 19I Math.BigInt
bignum Arbitrary-precision rationals 0N, 19N Math.BigNum
unit The type with only one value () Core.Unit

在F#中,对数字的加减乘除操作均是不检查的(unchecked);就是说如果超出范围,不会得到异常。例如,2147483647是最大的32位整数:

> 2147483647+1;;
val it : int = -2147483648

同时,我们也提供了检查溢出的实现:Microsoft.FSharp.Core.Operators.Checked。这个模块(module)中实现的操作将在移除发生时抛出System.OverflowException异常。

如果希望避免溢出,可以使用decimal,bigint和bignum类型。

除零将会得到System.DivideByZeroException,但浮点数(floating-point number)除外,浮点数除零将会返回Infinity和-Infinity。

通过类型推导(type inference)来确定操作符重载—如果没有重载则F#约定使用32位整数的操作符。

如果希望使用指定类型的操作符,则必须使用类型注释(type annotation)来帮助类型推导器推导出正确的结果:

> let squareAndAdd a b = a * a + b;;
val squareAndAdd : int -> int -> int

时间: 2024-08-07 03:26:47

【F#2.0系列】使用F#进行算术操作的相关文章

【F#2.0系列】使用选项(Option)

使用选项(Option) type 'T option = | None | Some of 'T 下面看一个例子: > let people = [ ("Adam", None); ("Eve" , None); ("Cain", Some("Adam","Eve")); ("Abel", Some("Adam","Eve")) ];; v

【F#2.0系列】使用F#的List

使用F#的List 创建一个list: 语法 描述 示例 [] 空list [] expr :: expr 将一个项加入一个list 1 :: [2; 3] [expr; ...; expr] 列举项创建list [1; 2; 3] [expr .. expr] 连续的数字 [1 .. 99] [ for x in list ... ] 通过运算生成list(类似于Linq里的select) [ for x in 1..99 -> x * x ] expr @ expr 合并两个list [1;

【F#2.0系列】介绍String类型

使用String 几种不同的String书写方式: 示例 种类 类型 "Humpty Dumpty" 字符串 string "c:\Program Files" 字符串 string @"c:Program Files" 无转义(Verbatim) string string "xyZy3d2"B Literal byte array byte [] 'c' 字符 char 转义字符: 字符 含义 ASCII/Unicode

Entity Framework 5.0系列之Code First数据库迁移

我们知道无论是"Database First"还是"Model First"当模型发生改变了都可以通过Visual Studio设计视图进行更新,那么对于Code First如何更新已有的模型呢?今天我们简单介绍一下Entity Framework的数据迁移功能. Entity Framework配置 在开始今天的话题之前先来看一下Entity Framework的配置,因为有很多朋友因为配置文件的问题造成"Migrations"命令执行失败.

ActionScript 3.0系列教程(4):爽快使用XML

xml|教程 ActionScript 3.0系列教程(3):Document Class特色为我们带来了什么? ActionScript 3.0系列教程(4):爽快使用XML 为什么放弃AS2.0选择AS3.0?如果只允许我说三个理由.那么AS3.0对XML的近乎完美的支持绝对是其中一个. 简单说说AS3.0中对于XML支持的不同吧: .AS2.0对XML的支持勉勉强强,将就着可以用.而AS3.0中对XML的支持是全方位的,极其强大和灵活的. AS2.0对XML的支持不是内建的(build-i

Flash ActionScript 3.0系列教程

教程 作者的blog: www.kingda.org ActionScript 3.0系列教程(1):与Flash9先来一次亲密接触! Flash Professional 9 ActionScript 3.0 Preview 版本今天发布了,意味着从此我们从此不仅仅只能使用Flex 2来使用AS3.0,更可以使用我们一直很熟悉的Flash IDE来进行AS3.0开发了. 与Flex 2不同,Flash 9 alpha(即上面的Flash Professional 9 ActionScript

F#简明教程二:F#类型系统和类型推断机制

在上一篇教程<F#与函数式编程概述>中我们了解到F#和函数式编程的一些特点,更多关于F#语言和函数式编程的介绍可以参考51CTO之前对微软MVP赵颉老师的专访<TechED 09视频专访:F#与函数式编程语言>.本节教程我们将学习到F#的一些基础原理,在开始之前,让我们先温习一下我们的Hello World代码: #light System.Console.WriteLine("This is one hello") printfn "This is

稳扎稳打Silverlight 3.0系列文章索引

相关文章:稳扎稳打Silverlight 2.0系列文章索引 在线DEMO http://www.cnblogs.com/webabcd/archive/2009/08/04/1538238.html 1.稳扎稳打Silverlight(33) - 3.0控件之AutoCompleteBox,DataPager 介绍 Silverlight 3.0 控件一览: AutoCompleteBox - 自动完成控件.当用户输入部分信息后,此控件可以基于指定的过滤算法在一个下拉框中陈列出匹配项 Data

Asp.net MVC2.0系列文章-显示列表和详细页面操作

上一篇文章,我们简单地完成了新闻的添加操作(Asp.net MVC2.0系列文章-添 加操作)此篇文章,我们使用Asp.net MVC2.0实现新闻清单的展示和新闻详细页面 . 创建View视图Index和NewsDetails 创建新闻首页,用来显示新闻列表. 在Views/News目录下,单击右键,选择Add->View,修改相关配置如下图所 示 在生成的HTML代码中,进行相关展示方面的修改.主要代码如下: <% foreach (var item in Model) { %> &