数据类型



 

python 浮点数组 写入十六进制bin python浮点数进制间的转换_字符串


浮点数float,简单来说是带小数点的,小数点后最多16位


0.55和0.3转化成二进制数【注:二进制数由0和1表示,逢二进一】,如下列代码:


#进制转换
0.55(十进制) = 0.1000110011001100110011001100110011001100110011001101(二进制) 0.3(十进制) = 0.0100110011001100110011001100110011001100110011001101(二进制)


然后,这俩二进制数通过二进制法则运算后,再通过复杂的计算公式,将二进制结果转成十进制小数。


经过这两次转换,小数点后面就产生了多余的“尾巴”。这样,就造成了我们与程序计算结果的差异


python2

>>> print(0.55+0.3)
0.85
>>>

python3

>>> print(0.55+0.3)

0.8500000000000001

 

>>> a="我"
>>> b='有'
>>> c=100
>>> d="""元"""
>>> print(a+b+str(c)+d)
我有100元
>>> print(a+b+'c'+d)
我有c元
>>> print(a+b+`c`+d)
我有100元
>>>

可是,为什么引号内我们使用的是数字,而不是变量名c呢?这是因为,当我们使用引号时,引号里的东西,都会被强制转换为字符串格式

所以,如果我们把变量名c放进引号里后,被强制转换为字符串的,将是变量名c,而不是变量名代表的数字10


 


int()函数转换数据类型
bug = '666'
hair = '0'
print(int(bug)+int(hair))
注意一点:只有符合整数规范的字符串类数据,才能被int()强制转换。


别看它虽然只有一句话,但它其实带有三层含义:首先,整数形式的字符串比如'666'和'0',可以被int()函数强制转换

其次,文字形式,比如中文、火星文或者标点符号,不可以被int()函数强制转换,

最后,小数形式的字符串,由于Python的语法规则,也不能使用int()函数强制转换


 


比方说下列代码,如果点击运行,程序会报错【ValueError:invalid literal for int() with base 10: '3.8'


print(int('3.8')) #运行后显示结果:ValueError:invalid literal for int() with base 10: '3.8'
print(int(3.8))
3


3.8强制转换的语句。但是,为什么输出的结果是3呢?


int()函数的本质是将数据转换为整数。所以对于浮点数,int()函数会做取整处理。但是,同我们平时对小数四舍五入的处理方法不同,int()函数会直接抹零,直接输出整数部分。


'3.8'这种。我不想让它变为整数3,想让它保持小数形式的3.8,那我要怎么做呢?


float()函数的使用,也是将需要转换的数据放在括号里,像这样:float(数据)


float()函数也可以将整数和字符串转换为浮点类型。但同时,如果括号里面的数据是字符串类型,那这个数据一定得是数字形式。


python 浮点数组 写入十六进制bin python浮点数进制间的转换_强制转换_02


>>> word = '3.8'
>>> number = 1
>>> sentence = '人工智障说:3.8+1等于'
>>> print(sentence+str(int(float(word)+number)))
人工智障说:3.8+1等于4
>>>

 错误案例:

 int()函数无法转换小数形式的字符串

 

python 浮点数组 写入十六进制bin python浮点数进制间的转换_python_03