C++ 浮点控制台输出问题

标签 c++ io

float x = 384.951257;
std::cout << std::fixed << std::setprecision(6) << x << std::endl;

输出为 384.951263。为什么?我正在使用 gcc。

最佳答案

float 通常只有 32 位。每个十进制数字大约 3 位(210 大致等于 103),这意味着它不可能表示超过 11 个十进制数字,并且考虑其他信息还需要表示,比如幅度,比方说 6-7 位十进制数字。嘿,这就是你得到的!

检查例如维基百科了解详情。

使用doublelong double 以获得更好的精度。 double 是 C++ 中的默认值。例如,文字 3.14double 类型。

关于C++ 浮点控制台输出问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21283804/

相关文章:

c++ - 检测进程内存是否被操纵?

windows - 为什么另一个线程中的阻塞 IO 会阻止 CreateWindowEx() 返回

tomcat 服务器上的 Java 应用程序将文件保存在服务器上而不是路径上

python - 独立于操作系统的文件系统访问

c++ - 将 Curiously Recurring Template Pattern (CRTP) 与其他类型参数一起使用

c++ - 将项目添加到 CTreetrl C++

读取大型矩阵数据文件的特定行

ruby - 有没有一种更简洁的方法使用 podio gem 在 Ruby 中将 xlsx 对象转换为 csv

c++ - SFML loadFromFile 未定义引用

c++ - 基于条件的编译时类型选择的可变参数模板