数值类型(bool,int->(enum),float)
在GS中,int的底层储存形式是64位的有符号整数,float是64位的浮点数;
bool
bool 类型是GS 内置声明的枚举类型,包含 true 和 false 两个值,bool更多用于条件判断语句中,其基本用法如下:
bool flag; // flag = false
flag = true; // flag = true
int
GS 支持十进制、二进制、八进制、十六进制和字符形式的字面量,如下所示:
int val = 65; // 四个式子等价,val的值都是18
int val = 0b1000001; // 二进制使用 0b 开头
int val = 0101; // 八进制使用 0 开头
int val = 0x41; // 十六进制使用 0x 开头
int val = 'A'; // 字符形式,val的值是65
int常用的外部函数
下面列出int类型一些常用的外部函数以及用法。
1. int转成string
函数原型:
string int_instance.to_string()
使用方法:
int val = 1024;
string str = val.to_string(); // str = "1024"
2. string转成int
函数原型:
int int.parse(string str)
使用方法:
string str = "1024";
int val = int.parse(str); // val = 1024
3. 判断是否为int
函数原型:
bool is_int(mixed val)
使用方法:
int val = 1024;
bool flag = is_int(val); // flag = true
4. 判断是否为字母
函数原型:
bool int_instance.is_alpha()
使用方法:
int val = 'a';
bool flag = val.is_alpha(); // flag = true
5. 判断是否是汉字
函数原型:
bool int_instance.is_chinese()
使用方法:
int val = '是';
bool flag = val.is_chinese(); // flag = true
6. 判断是否是字符型数字: '0'~'9'
函数原型:
bool int_instance.is_digit()
使用方法:
int val = '0';
bool flag = val.is_digit(); // flag = true
7. 判断是否是小写字母
函数原型:
bool int_instance.is_lower()
使用方法:
int val = 'a';
bool flag = val.is_lower(); // flag = true
8. 判断是否是大写字母
函数原型:
bool int_instance.is_upper()
使用方法:
int val = 'A';
bool flag = val.is_upper(); // flag = true
9. 判断是否是十六进制字符: '0'~'9','a'~'f','A'~'F'
函数原型:
bool int_instance.is_xdigit()
使用方法:
int val = 'A';
bool flag = val.is_xdigit(); // flag = true
10. int转成字符: 10~15 to 'A'~'F'
函数原型:
int int_instance.to_xdigit()
使用方法:
int val = 10;
int char = val.to_xdigit(); // char = 65 ('A'的ASCII码)
11. 字符转成int: '0'~'9','A'~'F' to 0~15
函数原型:
int int_instance.from_xdigit()
使用方法:
int char = 'A';
int val = char.from_xdigit(); // val = 10
12. 小写字母转成大写字母
函数原型:
int int_instance.to_upper()
使用方法:
int char_lower = 'a';
int char_upper = char_lower.to_upper(); // char_upper = 65
13. 大写字母转成小写字母
函数原型:
int int_instance.to_lower()
使用方法:
int char_upper = 'A';
int char_lower = char_upper.to_lower(); // char_lower = 97
注
条件判断语句中,int类型中除了0为false之外其它都为true。
float
float表示64位的浮点数,其只支持十进制形式的字面量,其用法如下
float pi = 3.14;
float a = 3f;
float b = 3.f;
float c = 3.0f;
float d = .1f;
注意:任意两个类型之间的转换都需要强制类型转换。
int val = 3.14; // 错误
int val = (int)3.14; // 正确
float pi = 3; // 错误
float pi = 3f; // 正确
float pi = (float)3; // 正确
运算可能会产生类型为 float 的 nan 或 inf
nan: not a number,表示“无效数字”。 nan是无序的,当对其进行逻辑运算时其不大于、小于或等于任何数,包括它自己。如果数学表达式中含有nan,那么数学表达式的结果为nan。
nan的产生情概况基本分成以下三类:
- 浮点数除法的 0.0 / 0.0 ,无论正负,两个数中有一个为浮点数
- 无意义的数学操作函数,如math.acos(-2) , math.sin(-2), math.log(-2) 等
- 部分 inf 运算, 如 inf - inf , inf / inf, 0 * inf
inf:infinite,表示“无穷大”。+inf 大于任何数字(除了它自己和nan), -inf小于任何数字(除了它自己和nan) , +inf 与 -inf 互为负数(但 -inf / inf 结果为 nan ) ,得到inf是需要查看是否有溢出或者除以0的情况。