zoukankan      html  css  js  c++  java
  • Trunc错误浮点计算处理

    发现Trunc函数错误
    Trunc是取整函数,但不知为什么,本人在多台计算机上得出如下错误结果。大家不妨试试,知道答案的解析下
    Trunc(2.1* 100) / 100 得出的结果不是2.1而是2.09
    Trunc(4.7* 100) / 100 得出的结果不是4.7而是4.06
    有知道问题的朋友解析下吗?
     
    ------解决方案--------------------
    2.1* 100的浮点结果是2.099999...
    trunc就是把小数部分扔掉了
    ------解决方案--------------------
    参考
    http://wenku.baidu.com/view/b3a4df1fa300a6c30c229fd5.html
    ------解决方案--------------------
    并不是Trunc的问题,而是计算机表示浮点数的问题
    因为计算机用的是2进制,而在计算机上保存的每一个数都是有受位数限制的,不可能是无穷大(小)的数
    所以与10进制相互转换的时候是有误差的,这只是精度的问题,误差是允许的可以忽略
     
    所以编程的时候,浮点数计算一般要格式化結果,或4舍5入前加个很小很小误差即可
    如:Trunc(2.1*100+0.00000000005)/100
     
    来源: http://www.myexception.cn/delphi/329697.html

  • 相关阅读:
    工坊第五天
    工坊第四天
    工坊第三天
    工坊第二天
    工坊第一天
    莫队 优雅暴力出奇迹
    状压 DP 总结
    关于MatlabGUI清除WorkSpace的用法
    ArduinoNano卡在上传,无法烧录
    两轮差速驱动机器人的坐标轨迹计算
  • 原文地址:https://www.cnblogs.com/maweiwei/p/13728378.html
Copyright © 2011-2022 走看看