开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第33天,点击查看活动详情
一、Number类型的分类
Dart的Number类型分为两种,int (整数) 和 double(浮点数),可以在声明变量时直接声明为 int / double:
main() {
int num = 100;
double d = 0.5;
print(num);
print(d);
}
int
取值范围为 (-2 的 63 次方) 到 (2 的 63 次方 - 1)
int的赋值不能包含小数点,会发生语法错误
double
双精度 64 位浮点数,依据 IEEE 754标准
double的赋值可以为整数字面量,但是不能是整数变量
int i = 1.5; // 语法错误 ❌
double f = 100; // 合法赋值,允许整数字面量
int a = 100;
double b = a; // 语法错误 ❌ ,不允许整数变量
二、int类型的Api
对象属性
1、isEven 是否为偶数
print(i.isEven); // 偶数为true,奇数为false
2、isOdd 是否为奇数
print(i.isOdd); // 奇数为true,偶数为false
3、isFinite 是否为有限数
print(i.isFinite ); // 有限数为true,正负的infinity、NaN为false
4、isInfinity 是否为无穷数
print(i.isInfinite); // 正负无穷时为true,其他为false
5、isNaN 是否非数字
print(i.isNaN); // 非数字为true,数字为false
6、isNegative 是否为负数
print(i.isNegative); // 小于0的数为true,大于或等于0为false
静态方法
1、int.parse
尝试将字符串source强制转换为int类型
int.parse("123"); // 123
int.parse("123abc"); // 抛出异常,只能转换纯数字的字符串
int.parse("abc"); // 抛出异常
2、int.tryParse
尝试将字符串source强制转换为int类型,并处理异常,逻辑和parse差不多,唯一的不同在于: tryParse在转换时,如果无法转换,则返回null,而parse会报错
int.tryParse("123"); // 123
int.tryParse("123abc"); // null
int.tryParse("abc"); // null
实例方法(常用)
1、abs()
取绝对值
int i = -1;
i.abs(); // 1
2、gcd()
取两数的最大公约数
int i = 10;
print(i.gcd(5)); // 取 10 和 5 的最大公约数
3、remainder()
取余数
int i = 10;
print(i.remainder(8)); // 获取10除以8的后的余数
4、toDouble()
转换成双精度
int i = 10;
double d = i.toDouble(); // 需要使用double类型的变量来接受返回值
print(d);
4、toString()
转换成字符串
int i = 10;
String str = i.toString(); // 需要使用String类型的变量来接受返回值
print(str);
5、toStringAsFixed()
转换成保留指定小数位的字符串,如果是double类型,小数点将进行四舍五入
int i = 10;
i.toStringAsFixed(2); // 10.00
三、double类型的Api
对象属性
1、isFinite 是否为有限数
print(d.isFinite ); // 有限数为true,正负的infinity、NaN为false
2、isInfinity 是否为无穷数
print(d.isInfinite); // 正负无穷时为true,其他为false
3、isNaN 是否非数字
print(d.isNaN); // 非数字为true,数字为false
4、isNegative 是否为负数
print(d.isNegative); // 小于0的数为true,大于或等于0为false
静态方法
1、double.parse
尝试将字符串source强制转换为double类型
double.parse("123.456"); // 123.456
double.parse("123"); // 123 (double类型)
double.parse("123abc"); // 抛出异常,只能转换纯数字的字符串
double.parse("abc"); // 抛出异常
2、double.tryParse
尝试将字符串source强制转换为double类型,并处理异常,逻辑和parse差不多,唯一的不同在于: tryParse在转换时,如果无法转换,则返回null,而parse会报错
double.tryParse("123.456"); // 123.456
double.tryParse("123"); // 123 (double类型)
double.tryParse("123abc"); // null
double.tryParse("abc"); // null
实例方法(常用)
1、abs()
取绝对值
double d = -1.2;
d.abs(); // 1.2
2、ceil()
向上取整数,如果数据为 infinity 或 NaN,会抛出异常
double d = 1.456;
print(i.ceil()); // 2
3、ceilToDouble()
向上取整数,并转换为整数德Double类型
double d = 1.2;
print(d.ceilToDouble()); // 2 类型为double
4、floor()
向下取整数,如果数据为 infinity 或 NaN,会抛出异常
double d = 1.9;
print(d.floor()); // 1
5、floorToDouble()
向下取整数,并转换为整数德Double类型
double d = 1.1;
print(d.floor()); // 1 类型仍是double
6、remainder()
取余数
double d = 0.9;
print(d.remainder(0.2)); // 0.09999999999999998
double类型取余数会有精度问题,按照常理,0.9除以0.2,得到结果应该是4,余数为0.1,但是由于精度问题,导致了得到不是0.1,而是一个接近0.1德double数,而且每次得到德结果不一定会相同
7、round()
四舍五入取整数,如果数据为 infinity 或 NaN,会抛出异常
double d = 1.5;
print(d.round()); // 2
double d = 1.4;
print(d.round()); // 1
8、roundToDouble()
四舍五入取整数,并转换为整数德Double类型
double d = 1.1;
print(d.roundToDouble()); // 1 类型仍是double