- 我在C语言的计算过程中定义了一个结构体,结构体里面有数组有变量,都是double型的
typedef struct PealValley {
double Peakval[Len_Data];
double Valleyval[Len_Data];
double PeakValle[Len_Data];
}PP;
- 计算过程中有写数难免会出现小数,例如2.6779999999999999这样的数据,如果只要保留后两位“显示”的话,用printf(“%.2f”,a)即可完成,但是现在在计算过程中为了避免计算量,提高计算速度,我想把后几位的小数删除,直接用2.68来代替2.6779999999999999,这样怎么实现呢?
- 还有问题就是我用VS调试代码的时候发现2.6779999999999999这种数据给结构体指针变量赋值的时候有时候会不对,比如我定义了结构体指针PP *PeakVall;PeakVall->Peakval是定义的结构体成员数组,长度为100;我把2.6779999999999999这个值幅值给PeakVall->Peakval[i]【加入这时候i=0】,但是得到的PeakVall->Peakval[0]的数据不是2.6779999999999999而是随机的一个很小的数字,这个是什么问题?
for (n_data = 1; n_data < len-1; n_data++)
{
if ((data[n_data] > data[n_data - 1]) && (data[n_data] > data[n_data + 1])) //筛选峰值
{
(PeakVall->Peakval)[i] = data[n_data];
(PeakVall->PeakValle)[k] = data[n_data];
i++;
k++;
}
else if ((data[n_data] < data[n_data - 1]) && (data[n_data] < data[n_data + 1])) //筛选谷值
{
PeakVall->Valleyval[j] = data[n_data];
PeakVall->PeakValle[k] = data[n_data];
j++;
k++;
}
}
这段代码很简单就是一个求峰值和谷值的程序,但是计算出来的峰值和谷值有问题。
求出来的数据峰值是这样的:
我看了数据,正常是前面7个正确 ,但是后面的一大堆不知道咋回事
4.考虑到3中所说的问题是因为double的数据小数位数太多导致的, 我想把2.6779999999999999这个数据在计算过程中保留两位小数【注意不是显示两位小数】,便于后续计算,应该怎么操作?