如何解决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 举报,一经查实,本站将立刻删除。