C++数据精度出问题了

#include<iostream>usingnamespacestd;#defineN5intmain(){floata[N];for(inti=0;i<N;i++){... #include <iostream>
using namespace std;
#define N 5
int main ()
{
float a[N];
for (int i = 0; i < N; i++)
{
cout << "please enter a number :";
cin >> a[i];
}
float max = a[0];
for (int j = 0; j < N; j++)
{
if (max < a[j+1])
{
max = a[j+1];
}
}
printf ("the max number of the 10 is : %f",max);
system ("pause");
return 0;
}
//求五个数中最大的一个,,但是求出来的数字有问题
展开
 我来答
龍__鳳
2014-07-19 · TA获得超过2346个赞
知道小有建树答主
回答量:948
采纳率:0%
帮助的人:1404万
展开全部

C++输出的话用cout就好了

光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
felithuang
2014-07-19 · TA获得超过849个赞
知道小有建树答主
回答量:520
采纳率:50%
帮助的人:710万
展开全部
这并非程序的问题,而是浮点数本身是有精度范围的,也即是说,你输入的89.567在计算机的表示里面不一定就有跟这个值完全相等的值,而是可能在内存中只是一个跟这个值非常接近的值。
追问
如何解决,,问题,,但是float是满足那个数据的精度额
追答
这种情况会发生什么后果,你可能永远都无法预料。例如如果用cout输出那个值,结果可能就是89.567,但用printf()输出就另一结果,这些应该跟io的算法实现以及浮点数的精度表示有关。
建议你换成cout输出可能更好一些。另外,用double类型也是提高表示准确性的一个方案。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
White_MouseYBZ
2014-07-19 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6625万
展开全部
没有问题。默认情况下printf("%f"...)由“%f"控制输出6位小数,但float型的有效位连同整数部分只有6位,所以001是机器添上的不确定数。你写成printf("%.3f",max);让它只输出3位小数就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式