【问题标题】:printf changing the value while using %.22fprintf 在使用 %.22f 时更改值
【发布时间】:2011-12-05 21:20:02
【问题描述】:

我对基本类型转换有疑问。

#include<stdio.h>

int main()
{
     printf("%.22f",0.30);
     return 1;
}

我得到的输出是 0.2999999999999999888978

为什么将 0.3 转换为较小的值

非常感谢任何帮助

南迪什

【问题讨论】:

  • 不,您的问题是在提出以前被问过无数次的问题之前无法搜索。见stackoverflow.com/faq#searching
  • 谢谢帕克斯迪亚布罗先生。但你不必如此苛刻地表达你对我的搜索能力的想法
  • 我知道this question says .NET in the can,但其实是一回事。
  • 我并没有刻意强硬,而是通过将您指向常见问题解答的相关部分来帮助您,详细说明确切搜索的工作原理。严厉会指出,作为一个已经在这里加入了七个月的人,你现在应该已经想通了:-) 试着把它当作有用的建议而不是批评。

标签: c++ c type-conversion


【解决方案1】:

这是因为0.30 不能用二进制浮点数精确表示。 在内部,只能存储0.30 的近似值。因此,当您将其全部打印出来时,您会得到一个略有不同的数字。

http://en.wikipedia.org/wiki/Floating_point

【讨论】:

  • @NandishA:如果问题得到解决或问题得到解答,请考虑接受最合适的答案,以保持用户的热情。
猜你喜欢
  • 1970-01-01
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
相关资源
最近更新 更多