cout<<p*(p-len1)*(p-len2)*(p-len3);p=1.86 len1=0.73 len2=0.73 len3=1.46变量均为double 为什么输出为00
时间: 2024-02-11 15:10:05 浏览: 14
这个表达式计算结果为 0.0,因为这个表达式中所有变量的值都是正数,而根据海龙公式:
```
S = sqrt(p * (p - len1) * (p - len2) * (p - len3))
```
其中,`S` 表示三角形的面积,`p` 表示三角形的半周长,`len1`、`len2` 和 `len3` 分别表示三角形的三条边长。如果三条边长无法构成一个三角形,那么海龙公式的值会变成负数,而 C++ 中计算负数的平方根会返回 NaN(非数值)或者抛出异常。但是,如果三条边长都是正数且能够构成一个三角形,那么海龙公式的值就是一个正数。
在这个问题中,假设这三条边长不能构成一个三角形,那么海龙公式的值就会变成负数,而 C++ 中计算负数的平方根会返回 NaN 或者抛出异常,因此输出结果为 0.0。
相关问题
cout<<p*(p-len1)*(p-len2)*(p-len3);p=1.86 len1=0.73 len2=0.73 len3=1.46 为什么输出为00
这是因为你在使用 `cout` 输出时,输出的是整数而不是浮点数,因此小数部分会被截断,只输出了整数部分,导致结果为 0。要想输出浮点数,可以将变量类型改为 `double`,或者在输出时使用格式化输出,例如:
```
double p = 1.86, len1 = 0.73, len2 = 0.73, len3 = 1.46;
cout << fixed << setprecision(2) << p*(p-len1)*(p-len2)*(p-len3);
```
这样可以输出小数点后两位。
cout<<p*(p-len1)(p-len2)(p-len3);p=1.86 len1=0.73 len2=0.73 len3=1.46变量均为double 为什么输出为00
这是因为在计算表达式 `p*(p-len1)(p-len2)(p-len3)` 时,缺少运算符,导致编译器无法正确识别。你可以将其修改为:
```
cout << p * (p - len1) * (p - len2) * (p - len3);
```
在每个因子之间添加 `*` 运算符即可。这样就可以正确输出结果了。