c++ - 无法让我的代码以十进制精度除

标签 c++

我试图写一个质数indentify-er,但是每次我尝试除以输入的数字时,它都不会取小数。我试过使用双变量和浮点变量。我是一个初学者,所以我可能不得不问一些关于您答案的问题。这是代码(looper是我用于while函数以使其继续运行的数字)。

#include <iostream>

int main() {

    int input = 0;
    float result = 0;
    int looper = 2;

    std::cout << "Please enter your number.\n";
    std::cin >> input;

    if (input == 1 or input == 0) {
        std::cout << "Your number is neither.\n";
    }

    while (looper < 1000002) {
        result = input / looper;
        std::cout << input / looper;
        if (fmod(result, 1) == 0) {
            std::cout << "Your number is composite.\n";
            std::cout << result;
            looper = 1000003;
        }
        else if (fmod(result, 1) != 0) {
            std::cout << "Your number is prime.\n";
        }

        looper = looper + 1;

    }
}

最佳答案

对于算术计算,有一些规则。

  • (如果任何操作数是floatdouble),则结果分别被截断为floatdouble类型(int 如果任何操作数是long类型,那么结果将被截断为long类型(int
    但是,您可以在此处做更好的选择(使用moduler运算符%),如下所示:

    if (input % looper == 0) {
        // case for composit
        // in other words input value is completely divisible by current value of looper
    }
    else {
        // input value is not completely divisible by current value of looper
        // this means there is a remainder exists
    }
    

    尽管您将素数数的printf语句放置在错误的位置,但是可以改进提供的算法以确定整数是否为素数。

  • 关于c++ - 无法让我的代码以十进制精度除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60443785/

    相关文章:

    c++ - 将 istream 传递给函数

    c++ - 错误 C3861 : '_tcsdup' : identifier not found

    c++ - 如何使 GCC 将 'arg,##__VA_ARGS__' 减少到 'arg' 以将其用作单个宏参数?

    c++ - Windows SDK 7.1 64 位构建 CloseHandle 显然不在 kernel32.lib 中

    c++ - boost库中的以下定义是什么意思

    c++ - OpenGL 的多边形渐变

    c++ - 什么是进程和线程?

    C++ 异常 - 什么不正常

    c++ - 防止将命名空间劫持到内联命名空间

    c++ - __transaction_atomic 未启用事务内存支持