停止浮点C++上的舍入

停止浮点C++上的舍入,c++,floating-point,C++,Floating Point,当试图使用std::cout输出浮点值时,我遇到了一个问题。您可以使用std::precision操纵器设置流的输出精度 要像在示例输出中那样将尾随零打印到给定精度,需要使用std::fixed manipulator。存在两个问题 您需要包括并使用std::setprecision操纵器 要获得所需的精度级别,需要使用双精度而不是浮点数 e、 g: 您需要使用std::fixed输出操纵器。可能还有std:setprecision操纵器。即使使用固定的,它仍然在最后舍入数字,无法使用std::

当试图使用std::cout输出浮点值时,我遇到了一个问题。您可以使用std::precision操纵器设置流的输出精度

要像在示例输出中那样将尾随零打印到给定精度,需要使用std::fixed manipulator。

存在两个问题

您需要包括并使用std::setprecision操纵器

要获得所需的精度级别,需要使用双精度而不是浮点数

e、 g:


您需要使用std::fixed输出操纵器。可能还有std:setprecision操纵器。即使使用固定的,它仍然在最后舍入数字,无法使用std::setprecision方法float只能精确到大约7位小数,而不是7位小数。您所需的输出分别为10和8位,因此将存在舍入/不准确。可能使用长双精度,它的小数位数比浮点和双精度多。我本想避免使用标题,但似乎我需要使用它以获得超出小数点的广泛精度。谢谢如果精度数字小于可用的小数,此示例仍将小数部分舍入。试试这个例子:双a=2.003943;标准::cout
 vector2f = {-32.00234098f, 96.129380f} //takes 2 floats (x, y)
 output: -32.0023:96.1294
 output: -32.00234098:96.129380
#include <iostream>
#include <iomanip>

int main()
{
    auto x = -32.00234098f, y = 96.129380f;

    std::cout << std::setprecision(8) << std::fixed << x << ":" << y << std::endl;

    // doubles    
    auto a = -32.00234098, b = 96.129380;

    std::cout << std::setprecision(8) << std::fixed << a << ":" << b << std::endl;

}
-32.00234222:96.12937927
-32.00234098:96.12938000