G++;浮点精度 我在C++程序中有这些行, auto f = log (FLT_MAX / 4); printf("%e", f); cout << f; auto f=log(FLT_MAX/4); printf(“%e”,f); cout

G++;浮点精度 我在C++程序中有这些行, auto f = log (FLT_MAX / 4); printf("%e", f); cout << f; auto f=log(FLT_MAX/4); printf(“%e”,f); cout,c++,gcc,floating-point,g++,C++,Gcc,Floating Point,G++,这与g++无关 你应该做的是: #include <limits> #include <iomanip> std::cout << std::setprecision(std::numeric_limits<double>::digits10+1) << f; #包括 #包括 标准::cout 你知道为什么cout要截断那个浮点值吗 因为默认精度C++流设置为6。 您可以使用更改精度。许多值不能用浮点值精确表示0.1是一个重复的二进

这与g++无关

你应该做的是:

#include <limits>
#include <iomanip>

std::cout << std::setprecision(std::numeric_limits<double>::digits10+1) << f;
#包括
#包括
标准::cout
你知道为什么cout要截断那个浮点值吗

因为默认精度C++流设置为6。


您可以使用更改精度。

许多值不能用浮点值精确表示<例如,code>0.1
是一个重复的二进制模式,其方式与1/3没有精确的十进制表示法相同。为什么有两个略有不同的值?这可能解释了输出的差异(除了两个输出例程可能有不同的预设集之外)。我想你有时会得到无法解释的否决票。我想任何有点名气的人都会有。