关于float在多位数printf时,输出结果不一致的问题
问题
类似,可以看到下面的这个问题
回答
总的来说,浮点数无法表示0.1。
这是因为,根据IEEE浮点数标准,float的尾数是23位,权分别为2−1,2−2,...。0.1 = 1/10 = 1/2 * 1/5 = 1 * %2^{-1}% * 1/5,而1/5无法直接找到对应的权,只能通过更小的权来近似。因此float数据类型中,0.1这个值不是真的0.1,所以当要求prinf的尾数较多时,就打印出了真正的值。
https://floating-point-gui.de/basic/
https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
本文来自博客园,作者:ijpq,转载请注明原文链接:https://www.cnblogs.com/ijpq/p/15708033.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步