本文介绍了四种小数四舍五入的方法:向上舍入、向下舍入、向下舍入和四舍五入到零。 每个方法都配有代码,方便我们根据不同的需求使用。 选择不同的方法来使用。
1. 四舍五入
(一)含义
顾名思义,无论输入是正数还是负数,它总是会找到大于或等于我输入的数的最小整数。
(2) 舍入声明
import math
math.ceil(-0.5)
(3) 舍入效果
2. 四舍五入
(一)含义
注意一个令人困惑的点。 “四舍五入”中的“四舍五入”是指向绝对值较大的方向进位,而不是数值较大的方向; “四舍五入”是指向绝对值较小的方向进位。
(2) 舍入声明:
round(-2.5)
(3) 舍入效果
注意! ! ! round() 舍入可以说是规则最复杂的舍入方法。
观察上图,我们可以看出round()舍入有两种情况:
小数部分大于0.5和小于0.5的数字在运算时完全符合“四舍五入”规则。 小数部分恰好等于0.5的数比较特殊:如果整数部分是偶数,则采用“四舍五入”操作向绝对值较小的方向移动; 如果整数部分是奇数,则使用“舍入”操作向绝对值移动。 朝着大方向走。
我个人猜测,处理“小数部分正好等于0.5的数”的目的是通过奇偶分布,让一半的0.5“圆”,一半的0.5“中”,这样会更均匀。
如果所有 0.5 都为“in”,这对于连续变量来说是合理的。 然而,在我们的日常生活中,很多时候变量都是离散的,0.5出现的概率是非常高的。 如果0.5全部采用“in”规则,误差会比较大。
3. 向下舍入
(一)含义
顾名思义,无论输入是正数还是负数,它总是会找到小于或等于我输入的数的最大整数。
(2) 舍入声明:
import math
math.floor(-0.3)
(3) 舍入效果
4. 四舍五入到零
(一)含义
顾名思义,无论输入是正数还是负数,总是找到满足这两个条件的数:
小于我输入的数字的绝对值; 尽可能地最大化这个数的绝对值。
(2) 舍入声明:
int(-0.9)
(3) 舍入效果
5.用于展示舍入效果的代码
上面四个屏幕截图的舍入结果是由以下代码生成的。
import pandas as pd
import numpy as np
import math
def rounding(type_r, number):
all_types = {'math.ceil':math.ceil,
'round':round,
'math.floor':math.floor,
'int':int}
return all_types[type_r](number)
def batch_rounding (type_r):
temp = []
for i in np.arange(-6,8,3):
if i >=0:
a = i+0.4
b = i+0.5
c = i+0.7
else:
a = i-0.4
b = i-0.5
c = i-0.7
temp.append({i:((a, rounding(type_r,a)), (b, rounding(type_r,b)), (c, rounding(type_r,c)))})
return tuple(temp)
def final_show(type_r):
outcome = batch_rounding(type_r)
outcome2 = pd.DataFrame(columns=['原1, 新1','原2, 新2','原3, 新3'])
for item in range(len(outcome)):
outcome2 = outcome2.append(pd.DataFrame(outcome[item], index = ['原1, 新1','原2, 新2','原3, 新3']).T)
outcome2.index.name = '整数部分'
return outcome2
final_show('math.ceil')
final_show('round')
final_show('math.floor')
final_show('int')