Python怎么转换金额 python转为数字_浮点数

数字

  • 整数
  • python2 有取值范围,溢出后自动转为长整型
  • Python3 中为长整型,无位数限制 理论上内存有多大,位数可能就有多大
  • 长整数
  • Python2 中单独对应 Long 类型
  • Python3 中不再有Long ,直接对应 int
  • 浮点数
  • 带小数的数字
  • 如果不带数字,可能有e和E
  • 复数
  • 高数中的复数,例如:1+2j

下面是常用的数字相关的操作:

  1. / 返回浮点数
    即便两个整数,/ 操作也会返回浮点数
In [1]: 8/5
Out[1]: 1.6
  1. // 得到整数部分
    使用 //
```

In [2]: 8//5
Out[2]: 1

In [3]: a = 8//5
In [4]: type(a)
Out[4]: int
```
  1. % 得到余数
    %
In [6]: 8%5
Out[6]: 3
  1. ** 计算乘方
    **
In [7]: 2**3
Out[7]: 8
  1. 交互模式下的_
    在交互模式下,上一次打印出来的表达式被赋值给变量 _
In [8]: 2*3.02+1	
Out[8]: 7.04

In [9]: 1+_
Out[9]: 8.04
  1. 十转二
    将十进制转换为二进制:
>>> bin(10)
'0b1010'
  1. 十转八
    十进制转换为八进制:
>>> oct(9)
'0o11'
  1. 十转十六
    十进制转换为十六进制:
>>> hex(15)
'0xf'
  1. 转为浮点类型
    整数或数值型字符串转换为浮点数
>>> float(3)
3.0

如果不能转化为浮点数,则会报 ValueError:

>>> float('a')
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    float('a')
ValueError: could not convert string to float: 'a'
  1. 转为整型
int(x, base =10)

x 可能为字符串或数值,将 x 转换为整数:

>>> int('12',16) # 把base进制的数转化为十进制 16进制的'12'转化为10进制是8
18
  1. 商和余数
    分别取商和余数
>>> divmod(10,3)
(3, 1)
  1. 幂和余同时做
    pow 三个参数都给出,表示先幂运算再取余:
>>> pow(3, 2, 4)
1
  1. 四舍五入
    四舍五入,第二个参数代表小数点后保留几位:
>>> round(10.045, 2)
10.04
>>> round(10.046, 2)
10.05
  1. 计算表达式
    使用内置函数eval计算字符串型表达式的值:
>>> s = "1 + 3 +5"
>>> eval(s)
9
>>> eval('[1,3,5]*3')
[1, 3, 5, 1, 3, 5, 1, 3, 5]
  1. 真假
    真假布尔值本质上也是数字,所以也归并到此节中讨论。
    以下四种情况都为假值:
>>> bool(0)
False
>>> bool(False)
False
>>> bool(None)
False
>>> bool([])
False

以下这些情况为真:

>>> bool([False]) #[False] is a list
True
>>> bool([0,0,0])
True
  1. all 判断元素是否都为真
    所有元素都为真返回 True,否则返回False
    #有0,所以不是所有元素都为真
>>> all([1,0,3,6])
False

#所有元素都为真

>>> all([1,2,3])
True
  1. any 判断是否至少有一个元素为真
    至少有一个元素为真返回True,否则返回False
# 没有一个元素为真
>>> any([0,0,0,[]])
False
# 至少一个元素为真
>>> any([0,0,1])
True
  1. 链式比较
    Python 支持下面这种链式比较,非常方便:
>>> i = 3
>>> 1 < i < 3
False
>>> 1 < i <=3
True
  1. 交换元素
    Python 除了支持上面的链式比较外,还支持一种更加方便的操作:直接解包赋值。
    如下所示,1,3 解包后分别赋值给a, b ,利用此原理一行代码实现两个数字的直接交换。
a, b = 1, 3
a, b = b, a  # 交换 a,b

如果明白此原理,下面的赋值操作就会迎刃而解:

a,b = 1, 3
a, b = b+1, a-1
print(a,b) # 结果是多少?

可能会有疑问:是 b+1 赋值给 a 后,a-1再赋值给 b ?

如果明白了上面的原理:等号右面完成压包,左侧再解包。

就会立即得出答案:肯定不是。

下面这行代码:

a, b = b+1, a-1
等价于:

c = b+1, a-1 # 压包
a, b = c # 解包
答案是:a=4, b=0

压包和解包还有更加复杂的用法,放到后面进阶部分总结。

  1. 链式操作
    下面这个例子使用 operator 模块中 add, sub 函数,根据操作符+,-,生成对应的函数,然后直接调用。
    很像设计模式中最频繁使用的对象工厂模式。
>>> from operator import (add, sub)
>>> def add_or_sub(a, b, oper):
return (add if oper == '+' else sub)(a, b)
>>> add_or_sub(1, 2, '-')
-1