double型数据处理问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 09:01:53
我定义了一个double型数组数据用来存储除法后得到的结果!(这些数据均为0-1之间)。可是我跟踪的时候这个数组的数据的小数点左后一位总是任意的值。影响到我后面的减法操作。因为我的while循环是在这些数不等于零时才成立的。可是我用减法时应为最后带着一个无效的位(跟踪时发现数据也就最后一位不一样,应该算是相等,毕竟这一位是小数点后第十多位了),一会程序正常一会死循环。该怎么办?要是指定只取double型数据前四位应该就没问题了,可是该怎样指定?在线等!!!!谢谢!
如a=0.1598556014256的最后一位6本不该列如考虑范围的
b=0.1598556014250 。b-a 就出错了。我也用了(b-a)<10e-8;等方法但是应为a ,b作为比变量参与了其他运算。这样做也不行。
所以我想直接取a,b的前8位,看有什么简单点的方法没?

直接取a,b的前8位运算是不可行的!
不过,输出前8位倒是可以(cout.precision(8);cout<<a;)

考虑到a,b作为变量参与了其他运算,可以写一个函数。

#include <iostream>
using namespace std;

double abs(double x)
{
if(x<0) return -x;
return x;
}

main()
{
double a=0.1598556014256,b=0.1598556014250 ;

while(abs(a-b)<1e-8)
{
语句;
}
}

你还是说的不明白,
你把你的程序要完成的功能或是关键代码段粘出来看看

你能把原程序列出来了,你的意思不明确.