nightcomein 2023-02-25 11:43 采纳率: 75%
浏览 72
已结题

最新版的python浮点数,四舍六入问题

进位问题,看了很多文章,有说python里是四舍六入,然后如果最后位数字是5,5后有有效数字则进位。这部分实验了下是对的。但是如果5后面没有有效数字,是舍是进,众说纷纭。有说5前是奇数舍,偶数进,等等。
我自己测试了一下,并不是这么简单。以下是我的测试(保留2位小数):
1.115 1.11 1.115 1.11 1.615 1.61 1.715 1.72
1.215 1.22 1.125 1.12 1.625 1.62 1.725 1.73
1.315 1.31 1.135 1.14 1.635 1.64 1.735 1.74
1.415 1.42 1.145 1.15 1.645 1.65 1.745 1.75
1.515 1.51 1.155 1.16 1.655 1.66 1.755 1.75
1.615 1.61 1.165 1.17 1.665 1.67 1.765 1.76
1.715 1.72 1.175 1.18 1.675 1.68
1.815 1.81 1.685 1.69
1.915 1.92 1.695 1.70

请教下各位,看一下,这个进位的规则到底是怎么样的?

  • 写回答

7条回答 默认 最新

  • X-道至简 2023-02-26 15:35
    关注

    这种后面只有5的有这种结果正常,因为浮点数本身就是不精确存储的,看下面的代码就清楚了
    如果要解决这个问题要么自己这样判断一下,要么看有没有什么库可以用的
    可以去研究一下浮点数的存储结构

    a1=1.110
    a11 = 1.115
    print(a11-a1)
    print('1.115 %.2f\n' % (a11))
    
    a2=1.210
    a22 = 1.215
    print(a22-a2)
    print('1.215 %.2f\n' % (a22))
    
    a3 = 1.310
    a33 = 1.315
    print(a33-a3)
    print('1.315 %.2f\n' % (a33))
    
    a4 = 1.410
    a44 = 1.415
    print(a44-a4)
    
    运行结果是这样的,说明没有进1的是存储本身没有到达50.004999999999999893
    1.115 1.11
    
    0.0050000000000001155
    1.215 1.22
    
    0.004999999999999893
    1.315 1.31
    
    0.0050000000000001155
    1.415 1.42
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(6条)

报告相同问题?

问题事件

  • 系统已结题 3月8日
  • 已采纳回答 2月28日
  • 赞助了问题酬金15元 2月25日
  • 创建了问题 2月25日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)