【发布时间】:2014-06-11 00:02:09
【问题描述】:
我想使用一个 if 条件来执行一行代码,具体取决于某个 double 是否具有整数值:
int A;
int B;
int C;
double X;
cout << "Enter three values: " << endl;
cin >> A >> B >> C;
X=A*B*C;
X=sqrt(X);
if (X holds an integer value){
//Do this
}
else if (X does not hold an integer value){
//Do this instead
}
基本上我不知道如何编写 if 条件。是否有一个简单的语法可以用来执行此操作,或者我是否需要添加一些单独的代码来检查双精度,然后将布尔值传递给 if 条件?
提前非常感谢。我已经检查过这里的其他地方,但只能找到人们想要计算检查结果的示例,而不是在条件下使用它。这通常是通过以某种方式截断双精度数或将其作为字符串检查来完成的,我相信这些都不行。
我正在使用 Visual Studio 2013 和 Windows 8.1。
任何帮助表示赞赏。
[编辑:我已将 cmets 中提到的 sqrt 函数添加到已接受的解决方案中]
【问题讨论】:
-
如果您将三个
ints 相乘,则不能有非整数值(nan或无穷大等值除外)。 -
ℕ 意义上的整数,还是数据类型 int(32/64 位整数)?另外,你对精度有什么限制?
-
@crashmstr 值得一提的是,由于双精度数的工作方式,即使将三个整数相乘也可能导致存储在 X 中的非整数值
-
@mebob 是的,虽然 double 本身可能是
13.999999或其他东西,但该示例以int变量相乘开始这一事实使得其目的不清楚(对于 @987654326 来说很大@持有?) -
现在已经这样做了 - 抱歉,离开了一段时间。
标签: c++ visual-studio-2013 windows-8.1