Dart语言的数值类型非常简单,只有两个类型:int和double。其中int表示64位整数类型,double表示双精度浮点数。int和double的基本用法如下:
代码语言:javascript复制int x = 20;
print(x);
double y = 20.12;
print(y);
print(x y); // 整数与浮点数相加的结果是浮点数
一旦变量的数据类型确定为int,那么就不能将一个浮点数或其他类型的值赋给这个变量,例如,下面的代码会抛出编译错误。
代码语言:javascript复制int x = 20;
//x = 12.4; // 抛出编译错误,无法将一个浮点数赋给一个int类型的变量
但可以将一个整数赋给一个double类型的变量,例如,下面的代码是正确的。double y = 20.12;
y = 40;
在Dart语言中有一个num类型,该类型既可以表示int类型,也可以表示double类型。也就是说,如果将一个变量声明为num类型,那么该变量既可以赋int类型的值,也可以赋double类型的值,代码如下:
代码语言:javascript复制num k = 20;
k = 40.12; // 将int类型变为double类型
print(k.runtimeType.toString()); // 输出double
int类型支持十六进制表示法和科学计数法,代码如下:
代码语言:javascript复制var hex = 0xABCD; // 十六进制标识符
print(hex); // 按十进制输出,结果是43981
var v = 1.42e5; // 科学计数法
print(v); // 输出结果:142000.0
下面的本例演示了内建数值类型更详细的用法。
代码语言:javascript复制void main() {
// x的值是int类型能表示的最大整数值
int x = 9223372036854775807;
print('x = $x');
// 输出x的位长度,结果是63
print('x.bitLength = ${x.bitLength}');
double y = 20.4;
// 输出变量y,其中通过$可以在字符串中嵌入变量,这些内容会在字符串一节中详细介绍
print('y = $y');
num k = 20;
print('k = $k');
print(k.runtimeType.toString());
k = 30.12;
print('k = $k');
print(k.runtimeType.toString());
var a = 20;
print(a.runtimeType.toString());
const b = 40.2;
print(b.runtimeType.toString());
// 定义十六进制数
var hex = 0xABC;
print('hex = $hex');
print(hex.runtimeType.toString());
// 使用科学计数法定义整数
var c = 1.42e5;
print('c = $c');
// 将字符串'1'转换为int类型的值
var one = int.parse('1');
print('one = $one');
print(one.runtimeType.toString());
// 将字符串'1.2'转换为double类型的值
var onePointTwo = double.parse("1.2");
print(onePointTwo.runtimeType.toString());
// 将整数1转换为String类型的值
var oneString = 1.toString();
// 将浮点数3.1415926转换为String类型的值
var piString = 3.1415926.toString();
print(piString.runtimeType.toString());
print(a b * c);
}
运行结果如图1所示。
图1 数值类型用法演示