Есть разница. 2.00
имеет тип double
, а 2.00f
имеет тип float
. Точная точность и форматные последствия этого зависят от вашей платформы. Имеет ли практическое значение использование одного над другим в вашем коде, зависит от контекста, в котором он используется.
В качестве инициализатора для переменной с типом explicity (основного числового типа) не будет никакой разницы, но при использовании в вызове функции он может потенциально повлиять на то, какая перегрузка или специализация шаблона используются.
Очевидно, что при использовании в качестве инициализатора в объявлении с использованием auto
спецификатора типа или в качестве выражения в спецификаторе decltype, тип объявленного объекта будет затронут.
decltype(2.00) x = 2.00f; // confusing
decltype(2.00f) y = 2.00; // also confusing
auto d = 2.00;
auto f = 2.00f;