Как гласит первый ответ, самый переносимый способ - указать точность числа - это использовать встроенные функции. Концепция дизайна языка заключается в том, что вы выясняете, какая точность требуется для ваших вычислений, и запрашиваете ее, и компилятор обеспечивает эту точность или лучше. Например, если вы рассчитываете, что ваше решение дифференциального уравнения является стабильным с 11 десятичными знаками, то вы запрашиваете это значение, и компилятор предоставляет его лучший тип, соответствующий вашим требованиям. Это чужой подход к большинству программистов, которые привыкли думать о том, что несколько вариантов, предоставляемых оборудованием, а не о том, что им нужно, и, возможно, не так просто, поскольку немногие из нас являются числовыми аналитиками.
Если вы хотите использовать встроенную функцию SELECTED_REAL_KIND и оптимизировать ее для своего конкретного компилятора и аппаратного обеспечения, вы можете поэкспериментировать. Некоторые комбинации обеспечат квадрупольную точность в программном обеспечении, которая будет медленной. Компилятор с двойной точностью и 10-байтовой расширенной точностью обеспечит этот более длинный тип с помощью selected_real_kind (17). Компилятор, который имеет двойную точность и четырехкратную точность, но не имеет расширенной точности 10 байт, обеспечит квадрупольную точность с помощью selected_real_kind (17) или selected_real_kind (32). (Я не знаю ни одного компилятора, который бы поддерживал как 10-байтовое расширение, так и квадруполь.) Компилятор, которому не хватает квадрупольной точности, вернет -1 для selected_real_kind (32).