Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅当c+;中存在小数时格式化浮点值的输出+; 我需要帮助C++中的输出格式,如果有,请显示小数点,或者如果没有小数点显示,则显示整个整数。 it should show 95.7 // When there is decimal it should show 90 // When there is no decimal_C++_Floating Point_Iomanip - Fatal编程技术网

仅当c+;中存在小数时格式化浮点值的输出+; 我需要帮助C++中的输出格式,如果有,请显示小数点,或者如果没有小数点显示,则显示整个整数。 it should show 95.7 // When there is decimal it should show 90 // When there is no decimal

仅当c+;中存在小数时格式化浮点值的输出+; 我需要帮助C++中的输出格式,如果有,请显示小数点,或者如果没有小数点显示,则显示整个整数。 it should show 95.7 // When there is decimal it should show 90 // When there is no decimal,c++,floating-point,iomanip,C++,Floating Point,Iomanip,我写道: cout << setprecision(1) << fixed; cout假设您正在执行除法 使用cout: i) 如果小数部分为.000000,则使用cout将只打印整数部分。 ii)如果小数部分不是.000000,则cout也将打印小数部分 因此,在这两种情况下,cout将导致您需要的行为 使用printf() i) 如果小数部分为.000000,则使用printf()将打印整数,后跟小数部分,例如3.000000。在这种情况下,您必须手动处理它,以便

我写道:

cout << setprecision(1) << fixed; 

cout假设您正在执行除法

  • 使用
    cout

    i) 如果小数部分为
    .000000
    ,则使用
    cout
    将只打印整数部分。
    ii)如果小数部分不是
    .000000
    ,则
    cout
    也将打印小数部分

    因此,在这两种情况下,
    cout
    将导致您需要的行为

  • 使用
    printf()

    i) 如果小数部分为
    .000000
    ,则使用
    printf()
    将打印整数,后跟小数部分,例如
    3.000000
    。在这种情况下,您必须手动处理它,以便只获得
    3
    的输出。您可以采用不同的方法,如转换为字符串、使用内置函数等。
    ii)如果小数部分不是
    .000000
    ,则
    printf()
    将像
    3.123456
    一样打印输出

  • 请参阅下面的代码。我使用的事实是,如果除法的余数为0,则表示小数部分为
    .000000
    ,并在打印之前将数字键入
    int
    。您可能必须使用上述不同的方法

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    int main() {
        double num1=270.0, num2=90.0;
        cout<<num1/num2<<"\n";                      //prints just 3
        printf("%f\n", num1/num2);                  //prints 3.000000
        if((int)num1%(int)num2==0)                  //means num1 is a multiple of num2.  So decimal is .000000
            printf("%d\n", (int)num1/(int)num2);    
    
        num2=91.0;
        cout<<num1/num2<<"\n";                      //prints 2.96703
        printf("%f\n", num1/num2);                  //prints 2.967033
        if((int)num1%(int)num2!=0)                  
            printf("%f\n", num1/num2);  
        return 0;
    }
    
    #包括
    #包括
    使用名称空间std;
    int main(){
    双num1=270.0,num2=90.0;
    
    cout假设您正在执行除法

  • 使用
    cout

    i) 如果小数部分为
    .000000
    ,则使用
    cout
    将只打印整数部分。
    ii)如果小数部分不是
    .000000
    ,则
    cout
    也将打印小数部分。

    因此,在这两种情况下,
    cout
    将导致您需要的行为

  • 使用
    printf()

    i) 如果小数部分为
    .000000
    ,则使用
    printf()
    将打印整数,后跟小数部分,例如,
    3.000000
    。在这种情况下,您必须手动处理该整数,以便只获得
    3
    的输出。您可以采用不同的方法,如转换为字符串、使用内置函数等。
    ii)如果小数部分不是
    .000000
    ,则
    printf()
    将像
    3.123456
    一样打印输出

  • 请看下面的代码。我使用的事实是,如果除法的余数为0,则表示小数部分为
    .000000
    ,并在打印之前将数字键入
    int
    。您可能必须使用上面指出的不同方法

    #include <iostream>
    #include <cstdio>
    using namespace std;
    
    int main() {
        double num1=270.0, num2=90.0;
        cout<<num1/num2<<"\n";                      //prints just 3
        printf("%f\n", num1/num2);                  //prints 3.000000
        if((int)num1%(int)num2==0)                  //means num1 is a multiple of num2.  So decimal is .000000
            printf("%d\n", (int)num1/(int)num2);    
    
        num2=91.0;
        cout<<num1/num2<<"\n";                      //prints 2.96703
        printf("%f\n", num1/num2);                  //prints 2.967033
        if((int)num1%(int)num2!=0)                  
            printf("%f\n", num1/num2);  
        return 0;
    }
    
    #包括
    #包括
    使用名称空间std;
    int main(){
    双num1=270.0,num2=90.0;
    
    cout您可以创建一个只将浮点转换为小数点后一位的函数。然后测试浮点是否等于其整数部分(即,如果90.0等于90),然后只打印整数部分,否则打印浮点

    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    void printFloat(float num) {
    
        // convert num to properly rounded decimal with 1 decimal place
        num = floor(num*10 + .5)/10; 
    
        // if the float equals the whole number, only show the whole number
        if (num == (int)num) 
            cout << (int)num << endl;
        else
            cout << num << endl;
    }  
    
    int main() {
        float num1 = 90.0;
        float num2 = 90;
        float num3 = 90.00001;
        float num4 = 95.7;
        float num5 = 95.74;
        float num6 = 95.75;
    
        printFloat(num1); // prints 90
        printFloat(num2); // prints 90
        printFloat(num3); // prints 90
        printFloat(num4); // prints 95.7
        printFloat(num5); // prints 95.7
        printFloat(num6); // prints 95.8
    }
    
    #包括
    #包括
    使用名称空间std;
    void printFloat(float num){
    //将num转换为小数点后1位的四舍五入小数
    num=地板(num*10+0.5)/10;
    //如果浮点数等于整数,则只显示整数
    如果(num==(int)num)
    
    cout您可以创建一个只将浮点转换为小数点后一位的函数。然后测试浮点是否等于其整数部分(即,如果90.0等于90),然后只打印整数部分,否则打印浮点

    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    void printFloat(float num) {
    
        // convert num to properly rounded decimal with 1 decimal place
        num = floor(num*10 + .5)/10; 
    
        // if the float equals the whole number, only show the whole number
        if (num == (int)num) 
            cout << (int)num << endl;
        else
            cout << num << endl;
    }  
    
    int main() {
        float num1 = 90.0;
        float num2 = 90;
        float num3 = 90.00001;
        float num4 = 95.7;
        float num5 = 95.74;
        float num6 = 95.75;
    
        printFloat(num1); // prints 90
        printFloat(num2); // prints 90
        printFloat(num3); // prints 90
        printFloat(num4); // prints 95.7
        printFloat(num5); // prints 95.7
        printFloat(num6); // prints 95.8
    }
    
    #包括
    #包括
    使用名称空间std;
    void printFloat(float num){
    //将num转换为小数点后1位的四舍五入小数
    num=地板(num*10+0.5)/10;
    //如果浮点数等于整数,则只显示整数
    如果(num==(int)num)
    
    难道你的问题是什么?你面临什么错误?当我写:难道你不应该使用
    std::setprecision(1)
    当您知道一个数字没有十进制值时,因为它强制任何数字在小数点的右侧有一位数字。您必须首先确定该数字是否有十进制值。如果有,请使用
    std::setprecision(1)
    。否则,不要使用它。@Allen,你确定你使用的是
    std::cout
    而不是
    printf()
    ?那么你的问题是什么?你面临的错误是什么?我写的时候只需
    std::cout:cout你不应该使用
    std::setprecision(1)
    当您知道一个数字没有十进制值时,因为它强制任何数字在小数点的右侧有一位数字。您必须首先确定该数字是否有十进制值。如果有,请使用
    std::setprecision(1)
    。否则,不要使用它。@Allen,你确定你使用的是
    std::cout
    而不是
    printf()
    if(num==(int)num)cout谢谢@LưuVĩnhPhúc-我已经更新了我的答案,以反映你更有效的建议。
    if(num==(int)num)谢谢@LưuVĩnhPhúc-我已经更新了我的答案,以反映您更有效的建议。