如何在cpp中返回十进制值

how to return decimal value in cpp

本文关键字:返回 十进制 cpp      更新时间:2023-10-16

这是我从另一个函数打印pi值的简单程序(我正在尝试学习函数调用)。当在main()中给出pi值时,它显示小数。但是当我试图从另一个函数中获取它时,它只显示3。

"return"是否只返回整数,还是还有其他东西?

我的程序:

int Pi()
{
    float a = 3.14159;
    return a;
}

int main()
{
    float x = Pi();
    std::cout << std::setprecision(5)<< x << std::endl;
    return 0;
}

"return"是否只返回整数,还是还有其他东西?

是的,因为你已经通过写

明确地要求它这样做了
int Pi()
^^^

如果你想让函数返回float,让它这样做:

float Pi()
^^^^^

您正在间接地将您的float a转换为int,因为您声明了您的函数返回整数值。

int Pi()

正如peter指出的,它应该是

float Pi()

double Pi()

如果你是c++的新手,我强烈建议你告诉你的编译器在你犯这样的错误时警告你。它将帮助您注意到可以编译但可能导致不想要的行为的小错误。例如,如果你使用g++,你可以使用

g++ -Wall -Wextra -Wconversion -pedantic -c -o main main.cpp

WallWextra告诉编译器在你犯小错误时警告你。Wconversion直接警告你是否有任何隐式类型转换(隐式强制类型转换)。

在g++中有更多的警告标志。可以看看它的手册;)

您的返回类型是int。它被称为隐式强制转换。PI float将被转换为int类型。

你的函数Pi()是int类型的,所以当它返回"a"的值时,它将浮点数转换为int型,而int型变量不能有小数点,所以它被更改为3。无论你将函数设置为哪种类型,它都会返回该类型的变量,最好的做法是将变量声明为你想要返回的类型,这样就不会有隐式转换,例如

string Pi()
    {
        string a = "3.14159";
        return a;
    }