标准::cout 不打印预期的浮点数
Std::cout not printing expected float?
这确实是一个基本问题,我正在测试 std::cout 以打印浮点数,以下内容工作正常:
std::cout<<10 / 3.2<<std::endl; //Output: 3.125
但是当我尝试时:
std::cout<< 500000 / 1000000<<std::endl; //Output: 0
为什么我的第二个示例的输出不是 0.5?这是自动向下舍入吗?
我正在编译g++ -std=c++14
在第二个代码示例中,500000
和 1000000
都具有整数类型,因此,当您将一个除以另一个时,您有整数除法(结果是向下舍入),即0
。若要解决此问题,请尝试将它们乘以1.0
或强制转换为任何浮点类型。
编译
时可评估常量表达式500000 / 1000000
将以整数算术计算,这实际上意味着任何余数都被丢弃。(请注意,/
的优先级高于 <<
,因此首先评估除法)。
一个明显的记忆是将其中一个参数提升到浮点数(然后编译器会自动提升另一个参数)。我总是选择第一个向代码的读者发出信号,表明你知道你在做什么:
500000.0 / 1000000
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 使用提升将数据从 PyObject 复制到浮点数 *
- 为什么 std::cout 打印浮点数、双精度和长双精度到相同的小数精度?
- 将浮点数转换为无符号字符数组并打印出来
- 在 c++ 中使用浮点数、双精度打印十进制
- 在打印浮点数之前检查浮点数是否为偶数
- 打印出浮点数的内部十六进制
- 标准::cout 不打印预期的浮点数
- C++ to_string函数根据额外打印语句的先见之明,为浮点数和整数转换提供不同的结果
- 如何在类似于 C 的C++中打印浮点数
- 打印出一个非常小的浮点数
- 打印最大的单精度浮点数
- 如何使用Arduino的Serial.println打印带有浮点数的字符串
- 如何打印完整的浮点数而不是"1.01383e+007"?
- 将浮点数打印为小数并修复错误输出
- 打印浮点数,如整数
- c++打印浮点数
- 使用for循环和指针打印浮点数组