jumper1573 2018-09-02 01:15 采纳率: 50%
浏览 595
已采纳

一个简单计算,输出有点不明白

为什么输入90时,输出的这么怪异
图片说明

  • 写回答

2条回答 默认 最新

  • threenewbee 2018-09-02 03:18
    关注

    并非只有输入90是这样,不信你一个一个去试。或者写一个循环去试。你测试的数量太少。

    浮点数存在两个误差,一个叫做尾数误差,浮点数用一定长度的二进制数表示尾数,而不是精确值,存在误差,在进行四则运算的时候,这个误差可能放大。
    用10进制举例:比如说我们用4位小数表示一个数字:0.1234,我们做如下运算 0.1234/10*10,因为尾数只有4位,所以0.1234/10=0.0123(而不是0.01234)
    再*10结果就是0.123,那么就出现误差了。

    另一个是进制转换误差。浮点数在计算机内是二进制表示的。像你程序中的0.1 0.015 0.6,都会变成二进制的无限循环小数。比如0.1,它就是
    0.000110011001100110011...(0011循环),之前说了,浮点数只能用固定的尾数表示,那么要么我们必须舍去超过长度的尾数(这会让计算结果偏小),要么必须四舍五入进位(这又会让结果偏大)。

    因为以上原因,所以结果出现略微偏大、偏小。

    但是为什么不是总是偏大偏小呢?这要看你最终结果的误差偏差是多少,如果误差小,那么在输出结果的时候无法体现出来,所以只有一部分的结果会出现误差。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误