Здравствуйте, vsb, Вы писали:
vsb>А вы как думаете? Может я не прав и это норма в современных языках? Лично мне ближе подход C++, который показывает математически точное значение при заданной точности.
Современные тенданции — специально не печатать незначащие десятичные знаки, напечатать их лишь столько, чтобы при обратной конвертации из строки попасть туда же.
Подход printf неправильный, устаревший. Следует использовать std::format.
#include <format>
#include <iostream>
int main()
{
printf("%.60f\n", 1.0/3); // 0.333333333333333314829616256247390992939472198486328125000000
std::cout << std::format("{:60}\n", 1.0/3); // 0.3333333333333333
printf("%.60f\n", 0.3); // 0.299999999999999988897769753748434595763683319091796875000000
std::cout << std::format("{:60}\n", 0.3); // 0.3
}
Да, кроме std::format так же себя ведёт и std::to_chars