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