【原创翻译】数值(number)

北城以北 提交于 2020-03-03 00:47:55

Go有很多种表示数值的类型。通常来说,我们将数值分成两类:整数和浮点数。

整数

整数——跟数学意义上的整数一样——没有小数部分(...,-3,-2,-1,-,1,2,3,...)。但不像我们用10进制表示整数,计算机用2进制表示。

我们十进制系统又10种数字位组成。当一个位上的10种数字位都表示完了,我们在下一位上用更大的数字进位。比方说9后面是10,99后面是100。计算机的做法也一样,但它们没有10个数字位,只有2个。所以计算机的计数会像这样:0、1、10、11、100、101、110、111,如此类推。另一个不同之处是,计算机里所有的整数都有一个明确的尺寸。它们只为确定位数的数据分配空间。所以4位的整数看起来会像:0000、0001、0010、0011、0100。当空间不够用的时候,计数将循环,从头计算(会发生很些很奇怪的行为)。

Go的整数类型有:uint8、uint16、uint32、uint64、int8、int16、int32和int64。8、16、32、64告诉我们每种类型的位数。uint的意思是“无符号整数”,而int是“有符号整数”。无符号整数只包含零和正整数。除此还有两种类型的别名:byte跟unit8是一样的,rune跟int32是一样的。字节(byte)是计算机中极普遍的衡量单位(1 byte = 8 bits,1024 bytes = 1 kilobyte,1024 kilobytes = 1 megabyte,...),因此Go中的byte会在定义其他类型中经常被使用到。还有三种依赖于计算机的整数类型:uint、int和uintptr。它们之所以依赖于机器,是因为它们的长度取决于计算机的架构。

总体来说,如果你要用整数,你就用int好了。

浮点数

浮点数是拥有小数部分(实数)的数(1.234、123.4、0.00001234、12340000)。它们在计算机里的准确表达是很复杂的,这里我们不必知道怎么去运用它们。现在,我们只需要记着:

  1. 浮点数并不精确。有时候并不能准确表达一个数。比方说计算1.01-0.99,答案是0.020000000000000018——一个跟我们预期的值无限接近,但不相等的值。

  2. 除此之外,还有些其他值可以被表示:“不是一个数”(NaN,比方说0/0)和正负无穷(+∞和-∞)。

Go有两种浮点类型:float32和float64(经常被叫做单精度和双精度)和两种复数(有虚数部分):complex64和complex128。通常来说我们使用float64。

例子

让我们写一个使用数值类型的例子。首先创建一个叫chapter3的文件夹并创建一个含有以下代码的main.go文件:

package main
import "fmt"
func main() {
fmt.Println("1 + 1 =", 1 + 1)
}

如果你运行代码,你会看到:

$ go run main.go
1 + 1 = 2

这个程序跟我们第二章所写的程序很相似。它们拥有相同的包声明行,相同的包导入行,相同的函数声明,并同样使用了Println函数。只是这次我们不打印Hello World,我们打印1+1=,后面跟着1+1的结果。这个表达式由三部分组成:数值字面量1(属于int类型),+运算符(代表着加)和另一个数值字面量1。让我们用同样的方式试试浮点数:

如果你运行代码,你会看到:

fmt.Println("1 + 1 =", 1.0 + 1.0)

我们用.0来告诉Go这是一个浮点数。运行这个程序将得到一样的结果。

Go有以下的数学运算符:

+ 加法
- 减法
* 乘法
/ 除法
% 余法

 

原文地址:http://www.zingscript.com/translate/golang-book

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!