使用C中的printf等效C++ std :: setprecision(20)

Ste*_*phQ 5 c c++

我想以十进制表示法以完全精度打印双打(但在数字的末尾没有额外的零).在C++中我可以使用:

std::setprecision(20);
cout << d; // Here d is a double
Run Code Online (Sandbox Code Playgroud)

什么是使用printf的等效C代码?

jan*_*neb 11

您可以使用"%.20g"说明符.g是IMHO通常比f更好,因为它不打印尾随零,并且合理地处理大/小值(改为e格式).

另请注意,对于"g"说明符,精度(本例中为"20")指定有效位数,而不是小数点后的位数.


Nim*_*Nim 8

格式通常是:%[flags][width][.precision][length]specifier,例如,%.20f

如果传入.*而不是传入.20,则可以在十进制值之前的运行时传递任意精度.

注意:您也可以使用g,但是您应该注意,在某些情况下,结果会有差异(在f和之间g- 由于解释精度的方式).

但主要的问题是你需要什么样的精度?(双/花车不精确)......