❶ 数据结构学习——浮点数
一、浮点数的奥秘
浮点数,它的魅力在于小数点位置的动态变化,让计算和存储更灵活。主要分为单精度float和双精度double两种类型,它们在编程中的应用场景广泛,尤其是在涉及小数运算时。学习浮点数前,务必理解科学计数法和二进制小数的基本概念。
1. 科学计数法的魔法
科学计数法,就是将数表示为a乘以10的幂次,例如:1.5e-3 和 4.3e+5。这种记数方式简洁明了,便于处理大规模的数值。
2. 二进制小数的转换
与十进制小数由整数部分、小数点和小数部分组成不同,二进制小数同样分为整数和小数部分,如0.101。将十进制转换为二进制,需不断将小数乘以2,取整后记录位值。如0.625转换为二进制就是0.101。
二、浮点数的内在机制
浮点数的构造与科学计数法惊人地相似,只是在二进制世界里展现。每个浮点数由符号、指数和小数部分组成,例如float的结构包含32位,其中1位是符号(0表示正,1表示负),8位是指数,剩下的23位是小数部分。
1. 整型转换的精度考量
将整型转换为浮点数时,如int转float可能会有精度损失,因为int的32位与float的24位有效位可能不匹配。例如,0转为float会丢失精度,但int转double则较为安全。长整型如long转double则需注意精度问题。
2. 精度的挑战与解决方案
浮点数存储小数时,由于二进制与十进制间的转换,有时会出现精度丢失。例如,0.3在二进制中是无限循环小数,转换为float时会四舍五入,如0.01111101...(舍去第24位)。因此,为了避免精度损失,很多编程语言提供了bigdecimal这样的定点数类型,小数位数固定,保证了计算的准确性。
总结与延伸
从十进制到浮点数的转换,涉及两个关键步骤:先将十进制小数转换为二进制,再将其科学记数法表示,最后填充到浮点数的存储结构。深入理解浮点数的原理,对于处理数值计算至关重要。继续深入学习算法和数据结构,将为你打开更广阔的编程天地。
❷ python中常见的运算符有哪些
| 算术运算符 |
+:两个数相加两个数相加,或是字符串连接
-:两个数相减
*:两个数相乘,或是返回一个重复若干次的字符串
/:两个数相除,结果为浮点数
%:取模,返回两个数相除的余数
//:两个数相除,返回商的整数部分
**:幂运算,返回乘方结果
| 关系运算符 |
==:比较对象是否相等
!=:比较对象是否不相等
>:大于,例如a>b,将比较a与b的大小,a>b返回True,否则返回False
<:小于,例如a<b,将比较a与b的大小,a<b返回true,否则返回false< p="">
>=:大于等于,例如a>=b,将比较a与b的大小,a>=b返回True,否则返回False
<=:小于等于,例如a<=b,将比较a与b的大小,a<=b返回True,否则返回False
| 赋值运算符 |
=:常规赋值运算符,将运算结果赋值给变量
+=:加法赋值运算符,例如 a+=b 等效于 a=a+b
-=:减法赋值运算符,例如 a-=b 等效于 a=a-b
*=:乘法法赋值运算符,例如 a*=b 等效于 a=a*b
/=:除法赋值运算符,例如 a/=b 等效于 a=a/b
//=:取整除赋值运算符,例如 a//=b 等效于 a=a//b
%=:取模赋值运算符,例如 a%=b 等效于 a=a%b
**=:幂运算赋值运算符,例如 a**=b 等效于 a=a*b
| 逻辑运算符 |
and:与运算,如果a 为False,a and b返回False 否则返回y的计算值
or:或运算,如果a非0,返回a的值,否则返回b的值
not:非运算,如果a为True,返回False,如果a为False,返回True
| 成员运算符 |
in:如果在指定的序列中找到值返回True,否则返回False
not in:如果在指定的序列中找到值返回True,否则返回False
| 身份运算符 |
is:判断两个标识符是不是引用自一个对象
is not:判断两个标识符是不是引用自不同对象