Dart 支持两种类型的数字
大家可以思考一下为什么Dart 只有两种数字类型,而Java 却有 byte, short, int, long, float, double 这么多种?各自有什么好处呢?欢迎留言讨论。而且Java 还有包装类型如:Byte, Short, Integer, Long, Float, Double
(这里插一段Java 类型的说明:https://blog.csdn.net/login_sonata/article/details/71001851)
- int 整形,大小在
到
之间
- double (双精度)浮点数,符合IEEE 754标准
int
和 double
都是 num
的子类。 num 类型定义了基本的操作符,例如 +, -, /, 和 *, 还定义了 abs()
、 ceil()
、和 floor()
等 函数。 位操作符,例如 >> 定义在 int
类中。
数字与字符之间的转换,很奇妙的是可以 数字.toString(),比如 1.toString() 。原因就是 int 是num 的子类,都是继承自Object 类,这一点来说比Java 的类型转换方便太多。
// String -> int
var one = int.parse('1');
assert(one == 1);
// String -> double
var onePointOne = double.parse('1.1');
assert(onePointOne == 1.1);
// int -> String
String oneAsString = 1.toString();
assert(oneAsString == '1');
// double -> String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');
整数类型支持传统的位移操作符,(<<, >>), AND (&), 和 OR (|) 。例如:
assert((3 << 1) == 6); // 0011 << 1 == 0110
assert((3 >> 1) == 1); // 0011 >> 1 == 0001
assert((3 | 4) == 7); // 0011 | 0100 == 0111
数字字面量为编译时常量。 很多算术表达式 只要其操作数是常量,则表达式结果 也是编译时常量。
const msPerSecond = 1000;
const secondsUntilRetry = 5;
const msUntilRetry = secondsUntilRetry * msPerSecond;
本文摘抄自:http://dart.goodev.org/guides/language/language-tour#numbers%E6%95%B0%E5%80%BC