CCF认证模拟-201612-2-工资计算-python-python存储机制问题

    技术2024-04-05  94

    问题

    思路 本题主要分为两种思路: 一种为正向,即一直使用循环语句和判断语句,通过计算所有情况最后得出结果 另一种是根据到手工资去推算税前所得工资 下面的示例是第二种方法,第一种方法比较常见

    代码示例

    T = int(input()) S = 0 t = 0 a = [T-83500+22495, T-58500+13745, T-38500+7745, T-12500+1245, T-8000+345, T-5000+45, T-3500, T] b = [0.45, 0.35, 0.3, 0.25, 0.2, 0.1, 0.03, 0] c = [0, 45, 300, 900, 6500, 6000, 8750] d = [83500, 58500, 38500, 12500, 8000, 5000, 3500, 0] for i in range(len(a)): if a[i] > 0: for j in range(len(a)-i-1): t = t + c[j] S = S + T + t print(S) print(b[i]*d[i]) print(1-b[i]) S = (S-b[i]*d[i])/(1-b[i]) break # 100分 print(round(S)) # 80分 print(int(S))

    首先说明一下,a和d可以通过计算得到,但为了展示方便,直接将其列出

    a为判断税收七点的一个界限,后面加的数字为各阶段税收 举个例子:比如说税后工资为4999,那么工资一定是在5000以上的,所以再判断税收的时候需要考虑的是另一个区间的纳税比例

    b为税收税率从小到大排列

    c为税收金额从小到大排列

    d为加上3500的不纳税金额以后的纳税区间

    之后的循环,先判断其处在哪一个纳税区间,之后先计算处在 整 区间内部的税收,最后计算税前收入

    S = (S-b[i]*d[i])/(1-b[i]) 所用的公式为: > (税前收入-之前整区间税前收入)x 当前区间税率 ==(当前收入-之前整区间税前收入)

    存在问题描述

    可以看到,在代码部分最后批注有一个80分的输出,即将S转换为int型 在debug的时候发现了一个有趣的问题即:

    python存储机制问题:

    测试用例

    税前工资:100000 税后工资:70080

    如下测试结果

    可以看到如果将debug的结果人为带入计算是没有问题的,但是出现了一个有趣的问题:

    如图,本来测试结果应该是10000,但是会出现一个无限循环的近似数 通过向老师请教,和查阅相关资料,了解到了python的存储机制问题 大致概括如下

    Processed: 0.009, SQL: 9