我有一项任务是创建一个计算体积为1234.67立方米的球体直径的程序。
我写了以下代码: -
#include <iostream>
#include <math.h>
using namespace std;
int main(){
float vol, dm, h;
vol = 1234.67;
cout << "Calculating the diameter of sphere with volume 1234.67 cu meters" << endl;
h = vol*(3/4)*(7/22);
dm = 2 * cbrt(h);
cout << "The diameter of sphere with volume 1234.67 cu meters is " << dm << endl;
return 0;
}
我的程序出了什么问题,它输出0作为输出
Calculating the diameter of sphere with volume 1234.67 cu meters
The diameter of sphere with volume 1234.67 cu meters is 0
答案 0 :(得分:0)
这是因为word = raw_input("Enter a word: ").lower()
s=[list(i) for i in word.split()]
s=[x for _list in s for x in _list]
print s
for i in s:
print ord(i)-96
等于零。阅读C&C的整数除法here
如果您打算使用浮点精度,则需要使用浮点除法。
答案 1 :(得分:0)
h = vol*(3/4)*(7/22);
dm = 2 * cbrt(h);
3,4,7,22,和2是整数。将它们更改为浮点数或双精度数(例如3.0或3.f)。这应该可以解决你的问题。
答案 2 :(得分:0)
你到处都使用了整数除法,它忽略了浮动部分而不是舍入。
使用3.f / 4.f或3.0 / 4.0代替
答案 3 :(得分:0)
h = vol * (3 / 4) * (7 / 22);
应该是
h = vol * (3.f / 4.f) * (7.f / 22.f);
与int
3 / 4 == 0
一样。