我在做别的事情,但一切都出来了零,所以我做了这个简约例如,输出仍为0司在C++中工作不正常
#include <iostream>
int main(int argc, char** argv)
{
double f=3/5;
std::cout << f;
return 0;
}
我缺少什么?
我在做别的事情,但一切都出来了零,所以我做了这个简约例如,输出仍为0司在C++中工作不正常
#include <iostream>
int main(int argc, char** argv)
{
double f=3/5;
std::cout << f;
return 0;
}
我缺少什么?
你错过了3和5是整数的事实,所以你得到的是整数除法。为了使编译器执行浮点除法,让他们中的一个实数:
double f = 3.0/5;
试试这个:
double f = 3.0/5.0;
这应该解决您的问题
尝试把一个.0
之一后,除数。这会将它们转换为浮点文字。
它并不需要向是.0
,你也可以做3./5
或3/5.
或3e+0/5
或3/5e-0
或0xCp-2/5
或者......有只需要一个指标涉及这样编译器知道它应该执行划分为浮点。
另一种可能性:double f=double(3)/5
。这是更多的打字,但它毫无疑问,你在做什么。
或者干脆用double f=.6
,也做的伎俩......
您正在使用的整数。你可以做很多事情来让你的常量像leftaroundabout状态一样加倍,但是这并不是很好的清洁。这很难阅读和混淆。如果你想3和5让他们3.0和5.0。如果他们被迫读取你的代码,每个人都会知道你的意思。他/她所陈述的大部分内容都需要您了解C/C++以及如何使用浮点数来存储头部或尾部。
嗯,我认为很明显'0xCp-2/5'不会被认真考虑! ...但至于使用3.0:这是一个品味问题。我个人不喜欢这样写,因为在科学中,小数点后的数字有限数字暗示了测量值等方面的某种不准确,所以当我看到3.0时,我总是认为3±.05和3.0/5.0对我来说是.6±.01。这不是双精度!我更喜欢'3./5'。 – leftaroundabout 2011-05-23 23:03:05
我的文章的重点是让阅读更容易。 3./5看起来不像标准的数学公式。你需要了解你的观众:我不认为这张海报(如果他们与一个真正的和不同的int有关的问题)是为高层次的科学应用程序设计的,所以我认为越简单越好。 – 2011-05-23 23:24:39
整数与浮点的划分看起来像是一段经文;我知道这是给我的。 – zenzelezz 2011-05-24 12:35:53