跳到主要内容

Numeric Values / 数值

源文档地址

浮点数

浮点数就是大多数人口中的实数或小数,比如 12.34。

之所以叫「浮点」,是因为它在内部的存储方式 —— 拿这个来命名或许并不高明。不过既然实数有好几种编码方式,我们还是坚持按它们内部的工作方式来称呼。

既然都这样了,我们决定在数字类型的隐晦命名上比别的语言再往前走一步:把位数也加进名字里。

  • Float32
  • Float64

理由是:32 位浮点和 64 位浮点都被广泛使用。长远来看,任何一门想把「机器到底该做什么」说清楚的语言,都得能同时处理这两种数据类型。而且还不止这两种:16 位浮点、128 位浮点……你懂的。给每一种另起一个名字,感觉不对。把这些数据类型区分开的唯一因素,就是它们存储一个实数值时的精度。

整数

出人意料的是,整数的类型还要更多,全都只是为了存整数。它们从 8 位起步,一般到 64 位为止,而且还分有符号和无符号两种版本。有符号整数能存正数和负数,无符号的只能存正数。长远来看我们会把它们全都做出来。我们先从能存负数的有符号版本开始:

  • Integer32
  • Integer64

换作别的语言,还得解释这些名字代表什么精度;给了这样的名字之后,我想我不用多说了。

布尔

一个布尔值要么是 0 要么是 1,也就是假和真。

兼容性

布尔值要么 0 要么 1 —— 可这两个也是整数啊!所以布尔就是整数?是的。当一个数据汇点需要一个整数值时,你可以把布尔数据连给它。

数字 5 是整数,但它同时也是实数。整数是全体实数的一部分。实数并没有被规定必须带小数,它完全可以是整的。这没问题。正因如此,你可以把整数数据喂进一个浮点数的数据汇点。

这两种情况下发生的,都是一次隐式转换。