Flutter 基础之 Dart 的数据类型 —— 数字类型

361 阅读2分钟

我正在参加跨端技术专题征文活动,详情查看:juejin.cn/post/710123… 。

今天继续学习 Flutter 的编程语言 Dart 的语法基础,主要是关于数据类型中数字类型的内容。

关键字

dart 中有 3 个关键字可以用来声明数字:

  • num

首先是 num,它既可以表示整数也可以表示小数:

// 例 1.1
void main() {
  // 整数
  num number1 = 1;
  print(number1); // 1
  
  // 小数
  num number2 = 1.1;
  print(number2); // 1.1
}
  • int

int 只能用来表示整数,如果赋值了小数会报错“A value of type 'double' can't be assigned to a variable of type 'int'.”:

// 例 1.2
void main() {
  // 整数
  int number1 = 1;
  print(number1); // 1

  // 小数
  int number2 = 1.1; // 报错
  print(number2);
}
  • double

double 用于表示浮点数,既可以是小数,也可以是整数:

// 例 1.3
void main() {
  // 整数
  double number1 = 1;
  print(number1); // 1.0

  // 小数
  double number2 = 1.1;
  print(number2); // 1.1
}

numdouble 都可以用来声明整数和小数,那么有什么区别呢?可以看到例 1.1 中,num 声明变量时赋值了整数 1,打印结果也是 1;但是例 1.3 中 double 声明的变量赋值为 1,打印结果却是 1.0,还是浮点数的表示方式。

API

num / int / double 除了是表示数字类型的关键字,还有各自对应着的类。其中 int 和 double 是 num 数字类型的子类,有着相关的类的方法。

有些其实和 js 中 Number 对象或 Math 对象的方法差不多,比如转成字符串类型的 toString() 方法,还有保留小数位数的 toStringAsFixed() 方法,对应 js 里的就是 toFixed(),再比如用来四舍五入的方法 round(),对应但就是 js 中的 Math.round()。下面介绍几个 dart 有而 js 没有的 api,更多其它的方法可以查阅官方文档

  • compareTo()

用于比较大小:

// 例 2.1
void main() {
  print(1.compareTo(1)); // 0
  print(1.compareTo(2)); // -1
  print(2.compareTo(1)); // 1
}

可以看出,如果调用 compareTo() 的数字同传入的参数一样大则返回 0,小则返回 -1,大则为 1。

  • gcd()

用于返回最大公约数:

// 例 2.2
void main() {
  print(10.gcd(4)); // 2
}
  • remainder()

取余数,在 js 中使用 %,比如 12 % 8(dart 中也可以直接用 % 取余数),在 dart 中有个 remainder() 方法:

// 例 2.3
void main() {
  print(12.remainder(8)); // 4
}
  • toInt()

用于做类型转换,将类型转为整数型:

// 例 2.4
void main() {
  double number = 1.9;
  print(number.toInt()); // 1
}

由例 2.4 可以得出结论:转换时 toInt() 是向下取整的。

感谢.gif 点赞.png