如何在cpp中返回十进制值
how to return decimal value in cpp
这是我从另一个函数打印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
Wall
和Wextra
告诉编译器在你犯小错误时警告你。Wconversion
直接警告你是否有任何隐式类型转换(隐式强制类型转换)。
您的返回类型是int。它被称为隐式强制转换。PI float将被转换为int类型。
你的函数Pi()是int类型的,所以当它返回"a"的值时,它将浮点数转换为int型,而int型变量不能有小数点,所以它被更改为3。无论你将函数设置为哪种类型,它都会返回该类型的变量,最好的做法是将变量声明为你想要返回的类型,这样就不会有隐式转换,例如
string Pi()
{
string a = "3.14159";
return a;
}
相关文章:
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- 什么时候在C++中返回常量引用是个好主意
- 你能重载对象变量名本身返回的内容吗
- 为什么 Serial.println(<char[]>);返回随机字符?
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如何获取std::result_of函数的返回类型
- QueryWorkingSet总是返回false
- (C++)分析树以计算返回错误值的简单算术表达式
- 访问者访问变体并返回不同类型时出错
- 如何返回一个类的两个对象相加的结果
- DB2 十进制字段从 OLEDB 返回为负DBTYPE_NUMERIC
- 函数不返回十进制,有时返回错误的值
- 如何将字符数转换为十进制并返回或转换ASCII'A'-'Z'/'a'-'
- 为什么将十进制转换为二进制的递归方法比迭代、使用和返回字符串更快
- C++ 一种方法,该方法将十进制值作为用布尔数组表示的二进制的整数返回
- 提取并以十进制形式返回 RGBA 颜色的各个组成部分
- 编写一个宏is_digit,如果其参数是十进制数字,则返回true
- 返回十进制值的Long int类型函数
- Microsoft psapi方法是否使用十进制或二进制表示法返回字节?
- 如何在cpp中返回十进制值