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