使用float类型总是出问题

TwenteMaster 2012-12-26 03:22:47
我编写了一个函数如下:

float fun4(float f1 , ...)
{
va_list parg; // Pointer for variable arugment list
va_start(parg , f1); // Initialize arugment pointer

cout << endl << "Name: fun4" << endl
<< "Argument list: " << f1;

float value = 0.f;
while((value = va_arg(parg , float)) != 0.f)
{
cout << " " << value;
}
cout << endl;
va_end(parg); // End variable argument process
return value;
}

然后在main函数中如下调用:

fun4(1.1f , 2.2f , 3.3f , 4.4f , 5.5f , 6.6f , 7.7f , 8.8f , 9.9f , 0.f);

输入的结果如下:
Name: fun4
Argument list: 1.1 -1.0842e-019 2.025 3.68935e+019 2.1625 -1.0842e-019 2.275
如果把float换成double的话就正常了,请高人帮忙解释下
...全文
261 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zilaishuichina 2012-12-26
  • 打赏
  • 举报
回复
浮点数就是这样 1.1 会变成1.0999999999...
TwenteMaster 2012-12-26
  • 打赏
  • 举报
回复
引用 1 楼 turingo 的回复:
很明显是精度不够,研究一下IEEE754标准。
如果是精度问题的话,那么我编写这样的代码却能得到正确的结果是怎么回事呢?

float f1 = 1.1f;
float f2 = 2.2f;
float f3 = 3.3f;
float f4 = 4.4f;
cout << f1 << endl << f2 << endl << f3 << endl << f4 << endl;
图灵狗 2012-12-26
  • 打赏
  • 举报
回复
很明显是精度不够,研究一下IEEE754标准。

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧