python下小数处理

348 阅读1分钟

示例

# python3 
from decimal import Decimal

print(1 / 2)  # 0.5
print(1 / 3)  # 0.3333333333333333
print('%.10f' % (1 / 3))  # 0.3333333333

num = 9.2174
new_num = round(num, 2)  # 保留两位小数
new_decimal_num = Decimal(num)  # 十进制算术的浮点类
print(new_num)  # 9.22
print(new_decimal_num)  # 9.2173999999999995935695551452226936817169189453125

# coding=utf-8
from decimal import Decimal

print(1 / 2)  # 0
print(1 / 3)  # 0
print('%.10f' % (1 / 3))  # 0.0000000000

num = 9.2174
new_num = round(num, 2)  # 保留两位小数
new_decimal_num = Decimal(num)  # 十进制算术的浮点类
print(new_num)  # 9.22
print(new_decimal_num)  # 9.2173999999999995935695551452226936817169189453125

爬坑经历

  • 经纬度转换的时候,做除法运算
  • 经纬度从数据库中读取,比大小后,再去数据库查数据,要保证数据的精切,使用了Decimal类, 否则查询不到数据
  • 考虑数据的异常处理

其他

除法运算

Python中的除法较其它语言显得非常高端,有套很复杂的规则。Python中的除法有两个运算符,/和//

首先来说/除法:

在python 2.x中/除法就跟我们熟悉的大多数语言,比如Java啊C啊差不多,整数相除的结果是一个整数,把小数部分完全忽略掉,浮点数除法会保留小数点的部分得到一个浮点数的结果。

在python 3.x中/除法不再这么做了,对于整数之间的相除,结果也会是浮点数。

Python2.x与3​​.x版本区别