2.b 数值 – 《简单易懂的Dart》

本篇是2.x中尚未提到的有关Dart数值的相关内容,为了《简单易懂的Dart》的完整性,特在此补全.

由于内容本身并不多,所以本篇的篇幅会比较短,涉及的知识也不会很深.

数值表示

我们在编程中经常用到的数值有3种类型:十进制数,十六进制数,二进制数.

在Dart中,十进制数是可以直接书写的,例如12345,就是一个十进制数.

表示十六进制则需要在十六进制数前加上0x,这和其他语言差不多.

关于二进制,很遗憾现在Dart还没有办法直接表示二进制数.

科学计数法

Dart中可以直接使用科学计数法表示一个数值.

比如100000我们可以写成1e5.

在使用科学计数法的时候,有一点需要我们注意:

科学计数法表示的数值为浮点数,在与int类型值作比较时切勿直接使用===.

数值转换

Dart没有隐式转换数据类型的特性,我们只能手动调用对象的对应方法进行类型转换.

以下是旧版本中各种数值类型的转换:

#import('dart:math');
void main(){  
  // String -> int
  int a=Math.parseInt("1");

  // String -> double
  double b=Math.parseDouble('1.0');

  // int -> String
  String c=1.toString();

  // double -> String
  String d=1.0.toString();

  // int -> double
  double e=1.toDouble();

  // double -> int
  int f=1.0.toInt();
}

在Dart M1 release中,旧版本中的转换方法被删除,取而代之的是不需要依赖dart:math即可完成的对象内置方法.

下面是新的方法,官方承诺了向后兼容性,今后应该不会有大的变动:

void main(){  
  // String -> int
  int a=int.parse("1");

  // String -> double
  double b=double.parse("1.0");

  // int -> String
  String c=1.toString();

  // double -> String
  String d=1.0.toString();

  // int -> double
  double e=1.toDouble();

  // double -> int
  int f=1.0.toInt();
}