c++中的浮点数运算问题

项目里用到了浮点数运算 double型变量,但是计算的结果不正确。
相关代码:
double quickTubao::getarea(vertice p1, vertice p2,vertice p3)
{
double area1 = p1.x*p2.z;
double area2 = p2.x*p3.z;
double area3 = p3.x*p1.z;
double area7 = area1+area2+area3;
double area4 = p1.z*p2.x;
double area5 = p2.z*p3.x;
double area6 = p3.z*p1.x;
double area8 = area4+area5+area6;
return area7-area8;
}
但是每次调试的计算结果并不正确:
图片说明
小数点后面全部被置为了0,这是什么原因呢?

vertice里面的xyz是什么类型的

vertice里xyz 一是小数部分本来就是0或者不是浮点型,二是xyz正确初始化或者赋值了吗,三是会不会出现溢出了