C++ C&x2B部门+;没有按预期工作
我在做其他的事情,但是所有的结果都是零,所以我做了这个简单的例子,结果仍然是零C++ C&x2B部门+;没有按预期工作,c++,division,C++,Division,我在做其他的事情,但是所有的结果都是零,所以我做了这个简单的例子,结果仍然是零 #include <iostream> int main(int argc, char** argv) { double f=3/5; std::cout << f; return 0; } #包括 int main(int argc,字符**argv) { 双f=3/5; std::cout您缺少3和5是整数的事实,因此您得到的是整数除法。要使编译器执行浮点除法,请将其中一个
#include <iostream>
int main(int argc, char** argv)
{
double f=3/5;
std::cout << f;
return 0;
}
#包括
int main(int argc,字符**argv)
{
双f=3/5;
std::cout您缺少3和5是整数的事实,因此您得到的是整数除法。要使编译器执行浮点除法,请将其中一个设为实数:
double f = 3.0 / 5;
试试这个:
double f = 3.0/5.0;
这应该可以解决您的问题。尝试在一个除数后面加一个.0
。这将把它们转换成浮点文字。它不需要是.0
,您也可以做3/5
或3e+0/5
或3/5e-0
或0xCp-2/5
或…只需要这样做o是一个相关的指示符,以便编译器知道它应该作为浮点执行除法
另一种可能性是:double f=double(3)/5
。这需要更多的输入,但这对您正在做的事情毫无疑问
或者简单地使用双f=.6
,这也可以做到这一点…您使用的是整数。您可以使用许多东西使常数像左周围的状态一样双倍,但是这不是很好。很难阅读和混淆。如果您想要3和5,则将它们设置为3.0和5.0。如果强迫它们,每个人都会知道您的意思阅读您的代码。他/她所说的很多内容确实要求您了解C/C++以及浮点是如何存储的,以形成正面或反面。如果您使用int
保存通用变量,并希望获得double
的比率:
using namespace std;
int main()
{
int x = 7;
int y = 4;
double ratio;
ratio = static_cast<double>(x)/static_cast<double>(y);
cout << "ratio =\t"<<ratio<< endl;
}
使用名称空间std;
int main()
{
int x=7;
int y=4;
双倍比率;
比率=静态铸件(x)/静态铸件(y);
好吧,我认为很明显,0xCp-2/5
并不是很严肃!……但对于使用3.0:这是一个品味问题。我个人不喜欢这样写,因为在科学中,小数点后的任何有限数字都暗示着测量值的某种不准确,所以当我看到3.0时,我总是这样认为nk为3±0.05,3.0/5.0对我来说是.6±0.01。这不是双精度!我更喜欢3/5
。我的帖子的全部目的是让它更容易阅读。3/5看起来不像一个标准的数学等式。你需要了解你的读者:我不认为海报(如果他们对实数和int的不同有问题的话)是为高级科学应用程序编程,所以我认为越简单越好。