繁体   English   中英

如何在没有数学库的情况下检查C ++中的变量是否完整

[英]How to check if variable is whole in C++ without a math library

我正在为一个初学者C ++类编写一个小程序,我应该从用户那里获取一个输入(我正在使用double,因为我喜欢让自己更难)并输出它是素数还是复合,以及如果它是复合的,我需要输出至少一个数字,该数字可被整除。

我手上有太多时间,所以我会走开一点让它变得更难。 我试图做任何事情,除了iostream之外什么都不用。 我已经掌握了大部分内容,但这一点让我感到困惑:如何在不使用数学库的情况下确定double是否为整数?(我在这里找到了使用math.h的好解决方案的问题,但没有它没有它)我想有一种方法可以做到这一点,而不用编写50行代码就可以看出这么简单......

您可能不应该在浮点数上进行任何计算,但是测试数字是否具有小数的简单方法是发言并将其与原始数据进行比较。 在C ++中,您可以通过转换为int (假设只有正数)然后转换回double来发言:

bool isWhole( double d ) {
   int whole = d;               // will round down to the nearest integer
   return (d-whole < epsilon);  // for a small enough epsilon
}

您可以将double值转换为适当大的整数类型,然后查看这两个值是否相同:

double d = /* whatever */
long long ival = d;
if (ival == d) {
    /* d holds integral value. */
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM