double value = 02369.000133699;//acutally stored as 2369.000133698999900
const std::uint32_t left = std::uint32_t(std::abs(value) < 1 ? 1: (1 + std::log10(std::abs(value))));
std::ostringstream out;
out << std::setprecision(std::numeric_limits<T>::digits10 - left) << std::fixed << value;
std::string str = out.str(); //str = "2369.00013369900"
std::ostringstream out2;
out2 << std::setprecision(std::numeric_limits<T>::digits10) << std::fixed << value;
std::string str2 = out2.str(); // str2 = "2369.000133698999900"
我想知道如何std :: stringstream /精度工作格式化浮點數。 看來,如果precision參數優於非小數位數16
負數,這導致表單的格式"2369.000133698999900"
,而不是一個「好」 "2369.00013369900"
stringstream setprecision和浮點格式化
如何std::stringstream
知道8999900
必須恢復到一個9
連如果我不「T告訴它做的舍入8
(如通過12
作爲參數傳遞給setprecision
功能)?但沒有爲參數優於這樣做是爲了12