微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ansi c中的转换问题[重复]

如何解决ansi c中的转换问题[重复]

|                                                                                                                   这个问题已经在这里有了答案:                                                      

解决方法

        drhirsch是正确的-5.55不能精确地表示为二进制浮点数(就像1÷7不能精确地表示为十进制一样)。 但是,就您的目的而言,这应该不成问题,因为浮子绝对可以将5.55精确地存储到三个位置,这就是您所拥有的数量。这只是意味着您在打印时需要使用正确的格式-在这种情况下为
%.3g
。在计算GPA时,您的计算仍将精确到三位,因为平均值的计算不会导致灾难性的抵消。     ,        请参阅此StackOverflow文章。 浮点数会出现一些问题,这些问题代表您想要的精确值,而无需进行其他工作。您将面临两个问题(在链接的文章中进行了介绍)-实际的舍入和格式设置。     ,        简短的答案:
atof(\"5.55\")
永远不会返回该十进制分数的精确(表示精确)表示形式,因为不存在该数字的精确二进制浮点表示形式,它是一个无限的二进制分数。 要获得较长答案,请参见http://www.math.umd.edu/~jkolesar/mait613/floating_point_math.pdf。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。